如何从主机启动虚拟机内的脚本?

如何从主机启动虚拟机内的脚本?

环境介绍:

  • 主机:Ubuntu 12.04 LTS
  • 客户机:Ubuntu 12.04 LTS。在此虚拟机中,我的程序.py存在。

  • 虚拟化系统:VirtualBox 4.3

问题:

有什么方法可以启动我的程序.py从主机?

答案1

您可以使用 Vboxmanage 来执行此操作。命令的形式为

VBoxManage guestcontrol <uuid|vmname> exec[ute]
            --image <path to program> --username <name>
            [--passwordfile <file> | --password <password>]
            [--environment "<NAME>=<VALUE> [<NAME>=<VALUE>]"]
            [--verbose] [--timeout <msec>]
            [--wait-exit] [--wait-stdout] [--wait-stderr]
            [--dos2unix] [--unix2dos]
            -- [[<argument1>] ... [<argumentN>]]

要运行 Python 脚本,您可以输入以下内容 - 此命令将 stdout 和 stderr 返回到主机

VBoxManage guestcontrol "Name of Virtual Machine Goes Here" exec --image /path/to/my/script --username UserNameGoesHere --password PasswordGoesHere --wait-exit --wait-stdout --wait-stderr

在我的例子中,测试脚本是

#!/usr/bin/python
print "hello"

您可以通过启动 VirtualBox 程序并从菜单中选择“帮助”来查找有关此信息,您正在寻找的特定部分是8.31. VBox管理客户控制

答案2

在客户机中启动应用程序的最简单方法是从主机向客户机发送键盘按键。在客户机中,应用程序设置为按键启动(使用设置 -> 键盘快捷键或ccsm任何其他方式)。从终端或脚本,我们将按键发送给客户机,在监听客户机操作系统时启动程序/应用程序。

要发送按键操作,请使用 VBoxManage 的选项,keyboardputscancode
例如
VBoxManage controlvm [name] keyboardputscancode 1d 38 e0 53将发送 Ctrl + Alt + DeleteVBoxManage controlvm [name] keyboardputscancode 38 24 将发送Alt + J

这种方法的优点是您不需要安装任何软件,甚至不需要添加客户程序。您不需要设置任何网络、ssh、密码等。
可以找到密钥的扫描代码这里

相关内容