Bagaimana saya bisa tahu dari baris perintah jika mesin virtual tertentu sudah aktif dan berjalan dari baris perintah?
Bagaimana saya bisa tahu dari baris perintah jika mesin virtual tertentu sudah aktif dan berjalan dari baris perintah?
Jawaban:
vboxmanage list vms
Dos not (again?) Memberi tahu apakah vm sedang berjalan atau tidak. Daftarnya juga tidak berjalan.
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
Akan mengembalikan 1 jika sedang berjalan, atau 0 jika tidak.
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
Jika Anda ingin daftar semua VM untuk melihat apakah mereka berjalan atau tidak menggunakan perintah ini:
vboxmanage list vms --long | grep -e "Name:" -e "State:"
Ini akan menampilkan nama VMs dalam satu baris dan statusnya di baris berikut seperti pada
Name: windows10pro
State: running (since 2017-06-09T09:16:46.593000000)
Name: ubuntu16LTS
State: powered off (since 2017-02-09T19:11:33.000000000)
Name: zammad
State: running (since 2017-06-09T09:08:13.871000000)
... | grep -v -e 'Host path:'
Perintah ini menampilkan daftar menjalankan vms (diuji pada Virtualbox 5.1)
VBoxManage list runningvms
Untuk mengetahui apakah vm sedang berjalan, perintah ini harus melakukan pekerjaan (mengembalikan 1 jika berjalan, 0 sebaliknya):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Saya percaya Anda bisa mendapatkan informasi ini menggunakan VBoxManage (antarmuka baris perintah ke VirtualBox).
Anda dapat menggunakan perintah showvminfo untuk menampilkan informasi tentang mesin virtual tertentu.
Ini adalah informasi yang sama dengan daftar VBoxManage yang akan ditampilkan untuk semua mesin virtual.
Menggabungkan VBoxManage list runningvms
dengan grep
sendirian tanpa hal lain tidak hanya akan memberikan output konsol, tetapi juga akan memberikan kode pengembalian yang diperlukan untuk kebutuhan skrip shell. The grep
perintah akan memerlukan kutipan yang tepat ganda untuk VM dalam kasus di mana nama vm disediakan: Contoh:
$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1
Untuk yang sedang berjalan
$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
Di jawaban lain di mana sed
digunakan untuk menghilangkan tanda kutip ganda, atau jika grep dilakukan tanpa tanda kutip ganda, positif palsu akan dikembalikan. Demonstrasi:
$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
root @ yourshell # vboxmanage daftar vms
Juga, lihat dokumen ini.
vboxmanage list runningvms