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 runningvms
z grep
samemu bez niczego innego nie tylko da wyjście konsoli, ale także zapewni kod powrotu wymagany do potrzeb skryptów powłoki. grep
Komenda 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 sed
uż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