web-dev-qa-db-fra.com

Comment passer des arguments Shell avec VBoxManage guestcontrol?

J'exécute une commande à partir de la machine hôte sur la machine invitée (Ubuntu) en tant que

VBoxManage guestcontrol Ubuntu1 run --exe "script.sh" --username xx --password xx --wait-stdout

où le script shell sur l'ordinateur invité est le

#!/bin/bash
echo $1

Comment puis-je passer l'argument 1 lors de l'exécution du script Shell?

J'ai supposé que cela devrait fonctionner comme

run --exe "script.sh arg1"

mais ce n'est pas le cas.

1
Googlebot

SSH

Nous pouvons exécuter une application sur un invité virtuel avec une session SSH de l'hôte sur cette machine. Toutefois, cela nécessite que la mise en réseau soit activée et que openssh-server ait été installé et exécuté sur la machine invitée.

VBoxManage guestcontrol

En guise d'alternative, nous pouvons utiliser les fonctionnalités intégrées de Virtual Box pour exécuter un programme sur une machine virtuelle invitée en cours d'exécution. Cela peut être fait avec VBoxManage guestcontrol .

L'exemple de ligne ci-dessous ne fera que lancer ls à la racine de la machine virtuelle:

_VBoxManage --nologo guestcontrol "<vm_name>" run --exe "/bin/ls" --username <guestuser> --password <password> --wait-stdout
_

L'exécution d'une application graphique sur l'invité nécessite que nous définissions la variable d'environnement DISPLAY sur l'invité avec l'option _--putenv_. L'exemple suivant va exécuter et ouvrir gedit sur l'invité:

_VBoxManage --nologo guestcontrol "<vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout
_

Nous pouvons également passer des options pour ouvrir un programme. L'exemple suivant ouvrira un fichier vmtest dans l'invité gedit:

_VBoxManage --nologo guestcontrol "vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout -- gedit/arg0 vmtest
_

Les options et les arguments sont séparés de la commande avec _--_, comme le montre l'exemple ci-dessous d'un script de l'hôte.


Exemple de script hôte

Le script ci-dessous lit un fichier _example.ogg_ utilisant paplay sur un ordinateur invité lorsqu'il est exécuté sur l'hôte. Remplacez les variables par les valeurs appropriées.

_#!/bin/bash

VM_NAME=myvm
VM_USER=takkat
VM_PASSWD=topsecret
VM_EXEC=paplay
VM_EXEC_PATH=/usr/bin/paplay
VM_ARGS=/home/takkat/Music/example.ogg

VBoxManage --nologo guestcontrol $VM_NAME run --exe $VM_EXEC_PATH \
--username $VM_USER --password $VM_PASSWD --wait-stdout \
-- {$VM_EXEC}/arg0 $VM_ARGS
_
2
Takkat