使用Python启动VirtualBox虚拟机

3 投票
3 回答
12267 浏览
提问于 2025-04-15 20:04

我该如何使用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的接口来操作。

https://pypi.python.org/pypi/pyvbox

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() 函数。

撰写回答