web-dev-qa-db-de.com

Wie übergebe ich Shell-Argumente mit VBoxManage guestcontrol?

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.

1
Googlebot

SSH

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.

VBoxManage-Gaststeuerung

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.


Beispiel für ein Host-Skript

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
_
2
Takkat