Ich führe einen Befehl vom Hostrechner auf den Gastrechner (beide Ubuntu) aus
VBoxManage guestcontrol Ubuntu1 run --exe "script.sh" --username xx --password xx --wait-stdout
wo ist das Shell-Skript auf dem Gastcomputer als
#!/bin/bash
echo $1
Wie kann ich das Argument 1 beim Ausführen des Shell-Skripts übergeben?
Ich ging davon aus, dass es so funktionieren sollte
run --exe "script.sh arg1"
aber das tut es nicht.
Wir können eine Anwendung auf einem virtuellen Gast mit einer SSH-Sitzung vom Host auf diesem Computer ausführen. Dies setzt jedoch voraus, dass das Netzwerk aktiviert und openssh-server installiert ist und auf dem Gastcomputer ausgeführt wird.
Alternativ können wir die integrierten Funktionen von Virtual Box verwenden, um ein Programm auf einer laufenden Gast-VM auszuführen. Dies kann mit VBoxManage guestcontrol
erfolgen.
In der folgenden Beispielzeile wird nur ls
im Stammverzeichnis der virtuellen Maschine ausgeführt:
_VBoxManage --nologo guestcontrol "<vm_name>" run --exe "/bin/ls" --username <guestuser> --password <password> --wait-stdout
_
Um eine grafische Anwendung auf dem Gast auszuführen, müssen wir die Umgebungsvariable DISPLAY für den Gast mit der Option _--putenv
_ definieren. Das nächste Beispiel wird ausgeführt und gedit für den Gast geöffnet:
_VBoxManage --nologo guestcontrol "<vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout
_
Wir können auch Optionen übergeben, um ein Programm zu öffnen. Das nächste Beispiel öffnet eine Datei vmtest
im Gast gedit:
_VBoxManage --nologo guestcontrol "vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout -- gedit/arg0 vmtest
_
Optionen und Argumente werden durch _--
_ vom Befehl getrennt, wie am besten im folgenden Beispiel eines Skripts vom Host zu sehen ist.
Das folgende Skript spielt eine _example.ogg
_ -Datei mit paplay
auf einem Gastcomputer ab, wenn es auf dem Host ausgeführt wird. Ersetzen Sie die Variablen durch entsprechende Werte.
_#!/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
_