4 votes

Comment exécuter un script à l'intérieur d'une machine virtuelle depuis l'hôte?

Présentation de l'environnement :

  • Machine hôte : Ubuntu 12.04 LTS

  • Machine invitée : Ubuntu 12.04 LTS. À l'intérieur de cette machine virtuelle, un my_program.py existe.

  • Système de virtualisation : VirtualBox 4.3

Question :

Y a-t-il un moyen de lancer my_program.py depuis la machine hôte ?

6voto

Kerem Kusmezer Points 189

Vous pouvez utiliser Vboxmanage pour ce faire. La forme de la commande est

VBoxManage guestcontrol  exec[ute]
            --image  --username 
            [--passwordfile  | --password ]
            [--environment "= [=]"]
            [--verbose] [--timeout ]
            [--wait-exit] [--wait-stdout] [--wait-stderr]
            [--dos2unix] [--unix2dos]
            -- [[] ... []]

Pour exécuter votre script python, vous pouvez saisir ce qui suit - stdout et stderr sont renvoyés à la machine hôte par cette commande

VBoxManage guestcontrol "Nom de la machine virtuelle ici" exec --image /chemin/vers/mon/script --username NomUtilisateurIci --password MotDePasseIci --wait-exit --wait-stdout --wait-stderr

Dans mon cas, le script de test était

#!/usr/bin/python
print "hello"

Vous pouvez trouver des informations à ce sujet en démarrant le programme VirtualBox et en sélectionnant l'Aide dans le menu. La section spécifique que vous recherchez est 8.31. VBoxManage guestcontrol

1voto

jpbochi Points 2380

La manière la plus simple de lancer une application en tant qu'invité est d'envoyer une pression sur une touche du clavier à l'invité depuis l'hôte. Dans l'invité, l'application est configurée pour se lancer sur une pression de touche (en utilisant les paramètres -> raccourcis clavier ou ccsm ou d'autres moyens). Depuis un terminal ou depuis un script, nous envoyons la pression sur une touche à l'invité, et en écoutant cela, l'OS invité lance le programme/l'application.

Pour envoyer une pression sur une touche, utilisez l'option keyboardputscancode de VBoxManage.
Par exemple
VBoxManage controlvm [nom] keyboardputscancode 1d 38 e0 53 enverra Ctrl + Alt + Suppr et VBoxManage controlvm [nom] keyboardputscancode 38 24 enverra Alt + J.

L'avantage de cette méthode est que vous n'avez pas besoin d'installer de logiciel, même des additions invité. Vous n'avez pas besoin de configurer de réseau, de ssh, de mots de passe, etc..
Les codes de numérisation pour une touche peuvent être trouvés ici.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X