Jak mogę stwierdzić z wiersza poleceń, czy konkretna maszyna wirtualna jest uruchomiona i działa z wiersza polecenia?
Jak mogę stwierdzić z wiersza poleceń, czy konkretna maszyna wirtualna jest uruchomiona i działa z wiersza polecenia?
Odpowiedzi:
vboxmanage list vms
Dos not (już?) Informuje, czy vm działa, czy nie. Lista również nie działa.
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
Zwraca 1, jeśli jest uruchomiony, lub 0, jeśli nie.
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
Jeśli chcesz zobaczyć listę wszystkich maszyn wirtualnych, aby zobaczyć, czy są uruchomione, czy nie, użyj tego polecenia:
vboxmanage list vms --long | grep -e "Name:" -e "State:"
Spowoduje to wyświetlenie nazwy maszyn wirtualnych w jednym wierszu i jej statusu w następnym wierszu, na przykład w
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:'
To polecenie wyświetla listę uruchomionych vms (testowane na Virtualbox 5.1)
VBoxManage list runningvms
Aby wiedzieć, czy vm jest uruchomione, to polecenie powinno wykonać zadanie (zwróć 1, jeśli działa, 0 w przeciwnym razie):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Wierzę, że możesz uzyskać te informacje za pomocą VBoxManage (interfejs wiersza poleceń VirtualBox).
Możesz użyć polecenia showvminfo do wyświetlenia informacji o konkretnej maszynie wirtualnej.
Są to te same informacje, które pokazywałaby lista vms VBoxManage dla wszystkich maszyn wirtualnych.
Łączenie VBoxManage list runningvmsz grep samemu bez niczego innego nie tylko da wyjście konsoli, ale także zapewni kod powrotu wymagany do potrzeb skryptów powłoki. grepKomenda będzie wymagało dokładnego podwójny cudzysłów dla maszyny wirtualnej w przypadku gdy nazwa VM jest usługa: przykład:
$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1
Dla działającego
$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
W drugiej odpowiedzi, w której sedużyto eliminacji podwójnych cudzysłowów, lub jeśli grep został wykonany bez podwójnych cudzysłowów, zwrócone zostaną fałszywe alarmy. Demonstracja:
$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
root @ yourshell # vboxmanage list vms
Zobacz także ten dokument.
vboxmanage list runningvms