0

virtualbox を制御するために python virtualbox API を使用しています。そのために、「pyvb」パッケージを使用しています(python APIドキュメントに記載されています)。

al=pyvb.vb.VB()
m=pyvb.vm.vbVM()
al.startVM(m)

Python インタープリターを使用して実行しました。エラーは表示されませんが、仮想ボックスは起動しません。何が問題なのか教えてください (必要なモジュールとパッケージはすべてインポートされています)。

4

2 に答える 2

3

次の関数を使用して、VM が実行されているかどうかを確認し、VM を特定のスナップショットに復元し、VM を名前で起動できることがわかりました。

from subprocess import Popen, PIPE

    def running_vms():
        """
        Return list of running vms
        """
        f = Popen(r'vboxmanage --nologo list runningvms', stdout=PIPE).stdout
        data = [ eachLine.strip() for eachLine in f ]
        return data

    def restore_vm(name='', snapshot=''):
        """
        Restore VM to specific snapshot uuid

        name = VM Name
        snapshot = uuid of snapshot  (uuid can be found in the xml file of your machines folder)
        """
        command = r'vboxmanage --nologo snapshot %s restore %s' % (name,snapshot)
        f = Popen(command, stdout=PIPE).stdout
        data = [ eachLine.strip() for eachLine in f ]
        return data

    def launch_vm(name=''):
        """
        Launch VM

        name = VM Name
        """
        command = r'vboxmanage --nologo startvm %s ' % name
        f = Popen(command, stdout=PIPE).stdout
        data = [ eachLine.strip() for eachLine in f ]
        return data
于 2010-02-22T19:05:25.053 に答える
0

引用されたコードは、実行する VM を指定していないようです。getVM呼び出しを行ってから、その結果の VM インスタンスを呼び出しで使用するべきではありませんstartVMか? 例えば:

al=pyvb.vb.VB()
m=al.getVM(guid_of_vm)
al.startVM(m)

...指定された GUID で識別される VM を起動します (すべての VirtualBox VM には、作成時に割り当てられた GUID があります)。VM の XML ファイルから GUID を取得できます。実行時に VM を検出する必要がある場合は、次の便利なlistVMS呼び出しがあります。

al=pyvb.vb.VB()
l=al.listVMS()
# choose a VM from the list, assign to 'm'
al.startVM(m)
于 2010-02-22T18:22:07.293 に答える