使用Python启动VirtualBox虚拟机
我该如何使用pyvb
模块在VirtualBox中以无头模式启动虚拟机呢?
3 个回答
0
如果你使用这个叫做 pyvbox 的库,你想要完成的任务其实非常简单:
import virtualbox
vbox = virtualbox.VirtualBox()
machine = vbox.find_machine("you_virtual_machine_name") ## for example: "ubuntu"
# If you want to run it normally:
proc = machine.launch_vm_process(session, "gui")
# If you want to run it in background:
# proc = machine.launch_vm_process(session, "headless")
proc.wait_for_completion(timeout=-1)
0
你可以使用 pyvbox
这个Python模块来启动和停止虚拟机,方法是通过VBox的接口来操作。
11
你可以相对简单地使用真实的 Python 绑定,而不是使用像 pyvb 这样的包装器去调用 VBoxManager 命令行。具体来说,你可以使用来自 VirtualBox 的 vboxshell.py 脚本。
另外,你也可以把它当作 Python 绑定的参考文档。实际上,Python 绑定没有文档,而且实现得也不是特别符合 Python 的风格。属性和方法不在 __dict__
中,所以你无法通过反射(或者在 ipython 中的自动补全)找到它们,而且也没有文档字符串。另一个关于 Python 绑定的参考是 vboxweb 项目的源代码,具体可以查看这里:VBoxWebSrv.py
对于无头启动,你需要在调用 vbox.openRemoteSession(session, uuid, type, "") 方法时,将 'headless' 作为第三个参数(类型)传入。可以参考 vboxshell.py 和 VBoxWebSrv.py 中的 startVm() 函数。