Wie kann ich über die Befehlszeile feststellen, ob eine bestimmte virtuelle Maschine über die Befehlszeile ausgeführt wird?
Wie kann ich über die Befehlszeile feststellen, ob eine bestimmte virtuelle Maschine über die Befehlszeile ausgeführt wird?
Antworten:
vboxmanage list vms
DOS nicht (mehr?) Sagt, ob der VM läuft oder nicht. Es werden auch keine laufenden aufgelistet.
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
Will gibt 1 zurück, wenn es läuft, oder 0, wenn nicht.
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
Wenn Sie eine Liste aller VMs anzeigen möchten, um zu sehen, ob sie ausgeführt werden oder nicht, verwenden Sie diesen Befehl:
vboxmanage list vms --long | grep -e "Name:" -e "State:"
Dies zeigt den Namen der VMs in einer Zeile und ihren Status in der folgenden Zeile wie in
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:'
Dieser Befehl gibt die Liste der laufenden vms aus (getestet auf Virtualbox 5.1)
VBoxManage list runningvms
Um zu wissen, ob eine VM ausgeführt wird, sollte dieser Befehl den Job ausführen (1 zurückgeben, wenn ausgeführt, 0 andernfalls):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Ich glaube, Sie können diese Informationen mit VBoxManage (Befehlszeilenschnittstelle zu VirtualBox) erhalten.
Mit dem Befehl showvminfo können Sie Informationen zu einer bestimmten virtuellen Maschine anzeigen .
Dies sind die gleichen Informationen wie bei VBoxManage list vms für alle virtuellen Maschinen werden.
Das Kombinieren VBoxManage list runningvms
mit grep
alone ohne irgendetwas anderes ergibt nicht nur eine Konsolenausgabe, sondern liefert auch den Rückkehrcode, der für die Shell-Skriptanforderungen erforderlich ist. Dasgrep
Befehl erfordert das genaue Anführungszeichen für die VM, wenn ein VM-Name angegeben wird: Beispiel:
$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1
Für einen Läufer
$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
In der anderen Antwort, in sed
der die doppelten Anführungszeichen entfernt wurden, oder wenn das grep ohne doppelte Anführungszeichen ausgeführt wurde, werden falsche Positive zurückgegeben. Demonstration:
$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
root @ yourshell # vboxmanage list vms
Siehe auch dieses Dokument.
vboxmanage list runningvms