¿Cómo puedo saber desde la línea de comandos si una máquina virtual específica está en funcionamiento desde la línea de comandos?
¿Cómo puedo saber desde la línea de comandos si una máquina virtual específica está en funcionamiento desde la línea de comandos?
Respuestas:
vboxmanage list vms
Dos no (¿ya?) Dice si la vm se está ejecutando o no. También enumera los que no se ejecutan.
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
Will devuelve 1 si se está ejecutando, o 0 si no.
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
Si desea una lista de todas las máquinas virtuales para ver si se están ejecutando o no, use este comando:
vboxmanage list vms --long | grep -e "Name:" -e "State:"
Esto mostrará el nombre de la máquina virtual en una línea y su estado en la siguiente línea, como en
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:'
Este comando genera la lista de vms en ejecución (probado en Virtualbox 5.1)
VBoxManage list runningvms
Para saber si se está ejecutando un vm, este comando debe hacer el trabajo (devolver 1 si se está ejecutando, 0 de lo contrario):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Creo que puede obtener esta información utilizando VBoxManage (interfaz de línea de comandos para VirtualBox).
Puede usar el comando showvminfo para mostrar información sobre una máquina virtual en particular.
Esta es la misma información que VBoxManage list vms mostraría para todas las máquinas virtuales.
La combinación VBoxManage list runningvms
con grep
solo sin nada más no solo dará una salida de consola, sino que también proporcionará el código de retorno requerido para las necesidades de scripting de shell. El grep
comando requerirá la comilla doble exacta para la VM en el caso de que se proporcione un nombre de VM: ejemplo:
$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1
Para uno corriendo
$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
En la otra respuesta, donde sed
se utilizó para eliminar las comillas dobles, o si el grep se realizó sin las comillas dobles, se devolverán falsos positivos. Demostración:
$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
root @ yourshell # vboxmanage list vms
Además, vea este documento.
vboxmanage list runningvms