VirtualBoxのAPIで楽しく仮想化ライフ (2)
続きです。
http://dharry.hatenablog.com/entry/20120828/1346096024
VirtualBoxには VBoxManage というCLIがあるので、これを使うと色々遊べたりします。
例えば、VMの一覧表示や起動停止といった一般的な操作だけではなく、VMの中のコマンドを実行するようなえげつないこともできます。
$ VBoxManage list (VM一覧取得) $ VBoxManage showinfo (VMの情報取得) $ VBoxManage controlvm (VMを起動停止) $ VBoxManage guestcontrol (VMを起動)
WindowsXPのVMを起動してXenCenterを起動するようなシェルスクリプトは数分でできたりします。私はUbuntuからXenCenterを使うために、こんなシェルスクリプトでXenCenterをシームレスモードで起動して活用しています。
まずはVMの一覧を取得。
$ VBoxManage list vms "windowsxpps3" {0f264a29-2e96-4fd5-8870-6df96fe334fe} "debian6" {18f307e9-173e-42d4-b3bd-39665af9b176} "ubuntu1204" {edba9b7a-c28b-4469-9256-566c6e27641a}
UUIDを指定してVMを起動して guestcontrol サブコマンドでXenCenterを起動します。
#!/bin/bash uuid=0f264a29-2e96-4fd5-8870-6df96fe334fe username=myuser password=mypassword image="C:\\Program Files\\Citrix\\XenCenter\\XenCenter.exe" state=`VBoxManage showvminfo ${uuid} | awk '{ if($1 ~/^State:/) { print $2 } }'` if [ ${state} != "running" ]; then echo "vm: ${$uuid} not running." exit 1 fi VBoxManage --nologo guestcontrol ${uuid} execute \ --image "${image}" \ --username ${username} \ --password ${password} \ --wait-stdout echo "Succeeded: run ${image}" exit 0