Comment démarrer et arrêter les invités VirtualBox via la ligne de commande

11

J'ai également VirtualBox sur Ubuntu 16.04 en tant qu'hôte et invité. Je dois gérer les invités (démarrer, arrêter uniquement) via la ligne de commande SSH, mais je n'ai trouvé aucune solution de travail.

codolom
la source
C'était plus facile que je ne le pensais. Désolé pour OFF. Il existe des outils de ligne de commande pour kvm. L'un d'eux est "virsh". Pour démarrer | arrêter une VM, utilisez simplement: $ virsh start | shutdown <vmname> (vous pouvez lister par $ virsh list --all). Vous pouvez utiliser cet outil dans le script bash ou crontab par exemple. Merci encore pour votre aide.
codolom

Réponses:

20

Tout cela peut être accompli en utilisant VBoxManage après avoir établi une connexion ssh:

1. Listez votre VMS:

Listez d'abord vos machines virtuelles disponibles avec la commande VBoxManage list vms, j'illustre cela sur ma propre configuration:

andrew@ilium~$ VBoxManage list vms
"Windows 8" {c4422acd-727b-45a0-9eef-65636bcde44d}
"Windows 10" {a8e262be-a032-4918-9085-63185318a979}
"Trusty Tahr Clean Copy" {c99bcf4b-9fea-4971-b190-425cb0b0cdeb}
"Xenial Xerus Clean Copy" {850122b9-c65f-425b-abb3-ffda68e159c6}
"Precise Pangolin Clean Copy" {169086e6-a3f4-42e7-8a89-63dcb273143f}
"Precise Pangolin Working Copy" {ff8312b6-cfae-4877-aa93-d71036d8882c}
"Xenial Xerus for MPlayer" {44902710-4368-4c06-9d24-3cb55328d31c}
"Xenial Xerus for vlc" {a62ad306-17d9-4ee3-8c1a-e4439c3b0e05}
"Xenial Xerus mingw64" {584d8513-6a16-49c7-b020-d657b93d5552}
"Trusty Tahr Working copy..." {433349e9-52eb-4066-bae7-623592871839}
"Xenial Xerus Working copy..." {dda23e74-cdb5-4c7d-8836-31be4129c02a}
andrew@ilium~$ 

Remarque: Si vous n'êtes pas sûr de la machine virtuelle en cours d' exécution, vous pouvez utiliser à la VBoxManage list runningvmsplace ...

2. Démarrez une machine virtuelle:

La VBoxManagecommande et les options que vous recherchez pour démarrer une machine virtuelle sont les suivantes:

  startvm                   <uuid|vmname>...
                            [--type gui|sdl|headless|separate]

Donc, pour démarrer la machine virtuelle "Trusty Tahr Clean Copy" dans mon exemple, vous utiliseriez:

VBoxManage startvm "Trusty Tahr Clean Copy" --type gui

3. Arrêtez une machine virtuelle:

Pour arrêter la machine virtuelle, vous utiliseriez à nouveau, VBoxManagemais cette fois avec l' controlvmoption:

  controlvm                 <uuid|vmname>
                            pause|resume|reset|poweroff|savestate|

Et dans mon exemple pour fermer la VM "Trusty Tahr Clean Copy" la commande serait:

VBoxManage controlvm "Trusty Tahr Clean Copy" savestate

Tout cela devrait bien fonctionner sur ssh, qui a besoin d'un gui après tout :)

andrew.46
la source
J'ai essayé ces commandes avant de demander. VBoxManage list vms | runningvms | toute autre chose - résultat vide Impossible. Les vms sont créés sur l'interface graphique et sont en cours d'exécution. C'était le moment où j'ai demandé de l'aide.
codolom
@codolom Hmmm .... doit alors être la connexion ssh. Vous connectez-vous à votre ordinateur hôte à partir d'un autre ordinateur via ssh? Je suppose que vous utilisez la ligne de commande ssh ...
andrew.46
@codolom t est curieux, j'ai testé les informations dans ma réponse sur mon propre système via ssh et cela a parfaitement fonctionné. Est-ce que `VBoxManage list vms` donne une erreur?
andrew.46
Je ne savais pas que cela devrait être un problème. J'ai essayé de le réparer de cette façon: stackoverflow.com/questions/5906441/… Je déteste cette zone de texte avec Ctrl + Entrée :( - Désolé pour les lignes manquantes. J'ai appliqué cette commande sur la console, mais les mêmes résultats.
codolom
Aucune erreur. Sortie vide.
codolom
2

Pour un arrêt progressif, utilisez:

VBoxManage controlvm "Name" acpipowerbutton
pseudo
la source