【问题标题】:clone an existing virtual machine from virtualbox using python使用 python 从 virtualbox 克隆现有的虚拟机
【发布时间】:2017-02-22 16:32:03
【问题描述】:

我想编写一个应用程序,它将从我单独安装的 virtualBox 克隆一个虚拟机。我假设我知道 vdi 文件在哪里并且可以访问它。我也知道我可以安装 virtualbox manager 然后在 python 中执行 shell。但是,我正在寻找现有的库/API,它们可以避免我使用 shell 进行权限处理。我尝试了 pyvbox,但它没有用。一个简单的发现没有得到机器。

 # I tried these two commands
 vm = vbox.find_machine('test_vm')
 vm2 = vbox.find_machine('path/to/test_vm')

我猜这是因为虚拟机 test_vm 没有注册到这个实例。关于如何从已安装的 virtualbox 克隆现有虚拟机的任何想法?

【问题讨论】:

  • 关于 pyvbox 的 IDK,但大多数 VBoxManage shell 命令需要机器 UUID。试试VBoxManage list vms

标签: python virtual-machine virtualbox


【解决方案1】:

您似乎在关注pyvbox documentation,但可能不正确?
这就是我所做的(win10,python 2.7):

>>> pip install pyvbox
>>> python
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import virtualbox
>>> vbox = virtualbox.VirtualBox()
>>> print("VM(s):\n + %s" % "\n + ".join([vm.name for vm in vbox.machines]))
VM(s):
 + tails2.4a
 + Kali-Linux-testvm
 + lubuntu1610
>>> vm = vbox.find_machine('lubuntu1610')
>>> vm
<virtualbox.library_ext.machine.IMachine object at 0x0000000002D069B0>

你指的是“会话”,我想你的意思是:
session = virtualbox.Session()
哪个(仅启动虚拟机会话)独立于您的 find_machine 命令。见下文:
progress = vm.launch_vm_process(session, 'gui', '')
它基本上启动了那个 virtualbox。

我认为,如果您的“test_vm”机器确实存在(是吗??您是否首先在 virtalbox 中创建它?)它会被发现就好了。也许像我一样先列出你的虚拟机:
print("VM(s):\n + %s" % "\n + ".join([vm.name for vm in vbox.machines]))
然后find_machine?或者我误解了你在说什么:p

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多