Come posso sapere se una macchina virtuale si trova dalla riga di comando?


25

Come posso sapere dalla riga di comando se una specifica macchina virtuale è attiva e in esecuzione dalla riga di comando?


4
vboxmanage list runningvms
slm

Risposte:


17
vboxmanage list vms

Dos not (più?) Dice se il VM è in esecuzione o meno. Elenca anche quelli non in esecuzione.

vboxmanage showvminfo "your_vm_name" | grep -c "running (since"

Restituirà 1 se è in esecuzione, o 0 in caso contrario.


2
Inoltre,if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
x-yuri,

su Windowsvboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
phuclv,

3
vboxmanage list runningvms
slm

9

Se si desidera un elenco di tutte le macchine virtuali per vedere se sono in esecuzione o non utilizzare questo comando:

vboxmanage list vms --long | grep -e "Name:" -e "State:"

Questo mostrerà il nome della VM in una riga e il suo stato nella riga seguente come 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)

L'output da questo include informazioni su tutte le cartelle condivise che potresti aver impostato. Pipa su un altro grep per rimuoverlo:... | grep -v -e 'Host path:'
Doug Thompson,

Questo mostra anche le macchine in PAUSA, "list runningvms" pensa che le macchine in pausa siano in esecuzione, il che può essere un po 'confuso ...
Samuel Åslund

5

Questo comando genera l'elenco di vms in esecuzione (testato su Virtualbox 5.1)

VBoxManage list runningvms

Per sapere se un VM è in esecuzione, questo comando dovrebbe fare il lavoro (restituire 1 se in esecuzione, 0 altrimenti):

VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l

Una macchina in pausa appare in esecuzione con "list runningvms", questo può essere piuttosto confuso durante la risoluzione dei problemi!
Samuel Åslund il

1

Credo che tu possa ottenere queste informazioni usando VBoxManage (interfaccia da riga di comando a VirtualBox).

È possibile utilizzare il comando showvminfo per mostrare informazioni su una determinata macchina virtuale.

Queste sono le stesse informazioni che l'elenco VBoxManage vms mostrerebbe per tutte le macchine virtuali.


1

La combinazione VBoxManage list runningvmscon grep solo senza nient'altro non solo darà un output di console, ma fornirà anche il codice di ritorno richiesto per le esigenze di script di shell. Il grepcomando richiederà la virgoletta doppia esatta per la VM nel caso in cui venga fornito un nome VM: esempio:

$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1

Per uno in esecuzione

$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0

Nell'altra risposta dove è sedstato usato per eliminare le doppie virgolette o se il grep è stato fatto senza le doppie virgolette, verranno restituiti falsi positivi. Dimostrazione:

$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.