Comment savoir à partir de la ligne de commande si une machine virtuelle spécifique est opérationnelle à partir de la ligne de commande?
Comment savoir à partir de la ligne de commande si une machine virtuelle spécifique est opérationnelle à partir de la ligne de commande?
Réponses:
vboxmanage list vms
Dos not (more?) Indique si la VM fonctionne ou non. Il répertorie également ceux qui ne sont pas en cours d'exécution.
vboxmanage showvminfo "your_vm_name" | grep -c "running (since"
Will renvoie 1 s'il est en cours d'exécution ou 0 sinon.
if ! VBoxManage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$' > /dev/null; then ...
vboxmanage showvminfo "vmname or GUID" | findstr /c:"running (since"
vboxmanage list runningvms
Si vous voulez une liste de toutes les machines virtuelles pour voir si elles sont en cours d'exécution ou non, utilisez cette commande:
vboxmanage list vms --long | grep -e "Name:" -e "State:"
Cela montrera le nom des machines virtuelles sur une ligne et son état sur la ligne suivante, comme dans
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:'
Cette commande affiche la liste des vms en cours d'exécution (testée sur Virtualbox 5.1)
VBoxManage list runningvms
Pour savoir si un vm est en cours d'exécution, cette commande doit faire le travail (retourner 1 si elle est en cours d'exécution, 0 sinon):
VBoxManage list runningvms | sed -r 's/^"(.*)".*$/\1/' | grep 'VM Name' | wc -l
Je crois que vous pouvez obtenir ces informations en utilisant VBoxManage (interface de ligne de commande vers VirtualBox).
Vous pouvez utiliser la commande showvminfo pour afficher des informations sur une machine virtuelle particulière.
Il s'agit des mêmes informations que la liste VBoxManage que vms afficherait pour toutes les machines virtuelles.
La combinaison VBoxManage list runningvms
avec grep
seul sans autre chose donnera non seulement une sortie console, mais fournira également le code de retour requis pour les besoins de script shell. La grep
commande nécessitera le guillemet double exact pour la machine virtuelle dans le cas où un nom vm est fourni: exemple:
$ VBoxManage list runningvms |grep '"demo_vm"'
$ echo $?
1
Pour une course
$ VBoxManage list runningvms |grep '"demo_vm_on"'
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
Dans l'autre réponse, où a sed
été utilisé pour éliminer les guillemets doubles, ou si la grep a été effectuée sans les guillemets doubles, les faux positifs seront retournés. Manifestation:
$ VBoxManage list runningvms |grep demo_vm
"demo_vm_on" {bbff5c0e-f8d4-4751-8d34-c53c4b191613}
$ echo $?
0
root @ yourshell # vboxmanage list vms
Consultez également ce document.
vboxmanage list runningvms