2017-02-22 5 views
0

私はseparetlyでインストールしたvirtualBoxから仮想マシンを複製するアプリケーションを作成したいと思います。私は、vdiファイルがどこにあるのか知っていて、それにアクセスできると仮定しています。私は、virtualbox managerをインストールして、シェルをpythonで実行できることも知っています。しかし、私はシェルと許可のものを通過するのを避ける既存のライブラリ/ APIを探しています。私はpyvboxを試みたが、うまくいかなかった。シンプルな検索はマシンを取得しません。pythonを使ってvirtualboxから既存の仮想マシンを複製する

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

これは、仮想マシンtest_vmがこのインスタンスに登録されていないためです。すでにインストールされているバーチャルマシンから既存のバーチャルマシンのクローンを作成する方法に関するアイデアはありますか?

+0

IDKについてはpyvboxですが、ほとんどの 'VBoxManage'シェルコマンドではマシンUUIDが必要です。 'VBoxManage list vms'を試してみてください。 – 9000

答えて

0

あなたがpyvbox documentationをフォローしているようですが、正しくない可能性がありますか?
これは私が(win10、パイソン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()
あなたの独立した(単にVirtualBoxのセッションを開始します) 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

関連する問題