web-dev-qa-db-fra.com

Comment savoir si une machine virtuelle est en 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?

23
BenAlabaster
vboxmanage list vms

Dos not (plus?) Indique si la machine virtuelle est en cours d'exécution ou non. Il liste aussi ceux qui ne courent pas.

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

Will renverra 1 s'il est en cours d'exécution ou 0 sinon.

16
Constantin Guay

Si vous souhaitez qu'une liste de toutes les machines virtuelles vérifie si elles sont en cours d'exécution ou non, utilisez cette commande:

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

Ceci affichera le nom des machines virtuelles sur une ligne et son statut 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)
8
Jörn

Cette commande affiche la liste des vms en cours d'exécution (testé sur Virtualbox 5.1).

VBoxManage list runningvms

Pour savoir si une machine virtuelle est en cours d'exécution, cette commande doit exécuter le travail (renvoyer 1 si exécuté, 0 sinon):

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

Combiner VBoxManage list runningvms avec grep seul sans autre chose donnera non seulement une sortie de console, mais fournira également le code de retour requis pour les besoins de script du shell. La commande grep requiert le guillemet double exact pour le VM dans le cas où un nom de machine virtuelle est fourni: exemple:

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

Pour un courant

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

Dans l'autre réponse, où sed a été utilisé pour éliminer les guillemets doubles, ou si le grep a été effectué 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
1
metatoaster

Je crois que vous pouvez obtenir cette information en utilisant VBoxManage (interface de ligne de commande pour 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 VBoxManage list vms s’afficherait pour toutes les machines virtuelles.

1
stderr

root @ yourshell # vboxmanage list vms

Voir aussi ce document.

0
Scandalist