使用python从virtualbox克隆现有虚拟机

时间:2017-02-22 16:32:03

标签: python virtual-machine virtualbox

我想编写一个应用程序,它将从我安装的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没有注册到这个实例。有关如何从已安装的虚拟机中克隆现有虚拟机的任何想法吗?

1 个答案:

答案 0 :(得分:0)

看起来你正在关注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', '')
它基本上启动了虚拟机。

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