Я запускаю команду с главной машины на гостевой машине (оба Ubuntu) как
VBoxManage guestcontrol Ubuntu1 run --exe "script.sh" --username xx --password xx --wait-stdout
, где сценарий оболочки на гостевой машине равен
#!/bin/bash
echo $1
Как я могу передать аргумент 1 во время выполнения сценария оболочки?
Я предположил, что он должен работать как
run --exe "script.sh arg1"
, но это не так.
Мы можем запустить приложение у виртуального гостя с сеансом SSH с хоста на этом компьютере. Однако это требует, чтобы сеть была включена, и что openssh-server установлен на гостевой машине.
В качестве альтернативы мы можем использовать встроенные функции Virtual Коробка для запуска программы на гостевой виртуальной машине. Это можно сделать с помощью openssh-server .
Пример строки ниже просто запустит ls в корне виртуальной машины:
VBoxManage --nologo guestcontrol "<vm_name>" run --exe "/bin/ls" --username <guestuser> --password <password> --wait-stdout
Запуск графическое приложение для гостя требует от нас указать переменную среды DISPLAY для гостя с опцией --putenv. Следующий пример запустится и откроется gedit для гостя:
VBoxManage --nologo guestcontrol "<vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout
Мы также можем передать параметры для открытия программы. Следующий пример откроет файл vmtest в гостевом gedit:
VBoxManage --nologo guestcontrol "vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout -- gedit/arg0 vmtest
Параметры и аргументы отделены от команды с помощью --, что лучше всего увидеть в нижнем примере скрипта с хоста .
Ниже сценария будет воспроизводить файл example.ogg с помощью paplay в гостевой машине при запуске на хосте. Замените переменные соответствующими значениями.
#!/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
Мы можем запустить приложение у виртуального гостя с сеансом SSH с хоста на этом компьютере. Однако это требует, чтобы сеть была включена, и что openssh-server установлен на гостевой машине.
В качестве альтернативы мы можем использовать встроенные функции Virtual Коробка для запуска программы на гостевой виртуальной машине. Это можно сделать с помощью openssh-server .
Пример строки ниже просто запустит ls в корне виртуальной машины:
VBoxManage --nologo guestcontrol "<vm_name>" run --exe "/bin/ls" --username <guestuser> --password <password> --wait-stdout
Запуск графическое приложение для гостя требует от нас указать переменную среды DISPLAY для гостя с опцией --putenv. Следующий пример запустится и откроется gedit для гостя:
VBoxManage --nologo guestcontrol "<vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout
Мы также можем передать параметры для открытия программы. Следующий пример откроет файл vmtest в гостевом gedit:
VBoxManage --nologo guestcontrol "vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout -- gedit/arg0 vmtest
Параметры и аргументы отделены от команды с помощью --, что лучше всего увидеть в нижнем примере скрипта с хоста .
Ниже сценария будет воспроизводить файл example.ogg с помощью paplay в гостевой машине при запуске на хосте. Замените переменные соответствующими значениями.
#!/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
Мы можем запустить приложение у виртуального гостя с сеансом SSH с хоста на этом компьютере. Однако это требует, чтобы сеть была включена, и что openssh-server установлен на гостевой машине.
В качестве альтернативы мы можем использовать встроенные функции Virtual Коробка для запуска программы на гостевой виртуальной машине. Это можно сделать с помощью openssh-server .
Пример строки ниже просто запустит ls в корне виртуальной машины:
VBoxManage --nologo guestcontrol "<vm_name>" run --exe "/bin/ls" --username <guestuser> --password <password> --wait-stdout
Запуск графическое приложение для гостя требует от нас указать переменную среды DISPLAY для гостя с опцией --putenv. Следующий пример запустится и откроется gedit для гостя:
VBoxManage --nologo guestcontrol "<vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout
Мы также можем передать параметры для открытия программы. Следующий пример откроет файл vmtest в гостевом gedit:
VBoxManage --nologo guestcontrol "vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout -- gedit/arg0 vmtest
Параметры и аргументы отделены от команды с помощью --, что лучше всего увидеть в нижнем примере скрипта с хоста .
Ниже сценария будет воспроизводить файл example.ogg с помощью paplay в гостевой машине при запуске на хосте. Замените переменные соответствующими значениями.
#!/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