Представление среды:
Гостевая машина: Ubuntu 12.04 LTS. Внутри этой виртуальной машины существует my_program.py .
Система виртуализации: VirtualBox 4.3
Вопрос:
Есть Есть ли способ запустить my_program.py с хост-машины?
Можно использовать Vboxmanage, чтобы сделать это. Форма команды
VBoxManage guestcontrol <uuid|vmname> exec[ute]
--image <path to program> --username <name>
[--passwordfile <file> | --password <password>]
[--environment "<NAME>=<VALUE> [<NAME>=<VALUE>]"]
[--verbose] [--timeout <msec>]
[--wait-exit] [--wait-stdout] [--wait-stderr]
[--dos2unix] [--unix2dos]
-- [[<argument1>] ... [<argumentN>]]
Для запущения скрипта Python, можно ввести следующее - stdout, и stderr возвращаются к хост-машине этой командой
VBoxManage guestcontrol "Name of Virtual Machine Goes Here" exec --image /path/to/my/script --username UserNameGoesHere --password PasswordGoesHere --wait-exit --wait-stdout --wait-stderr
В моем случае, которым сценарий тестирования был
#!/usr/bin/python
print "hello"
, можно найти информацию об этом путем запуска программы VirtualBox и выбора Справки из меню, и определенный раздел, который Вы ищете, 8.31. VBoxManage guestcontrol
Самый легкий способ запустить приложение в госте состоит в том, чтобы отправить нажатие клавиши на клавиатуре гостю от хоста. В госте приложение устанавливается для запуска на нажатии клавиши (Используя настройки-> сочетания клавиш или ccsm
или любые другие пути). От терминала или из сценария мы отправляем нажатие клавиши гостю при слушании того гостя запуск ОС программа/приложение.
Для отправки нажатия клавиши используют опцию keyboardputscancode
VBoxManage, Например
VBoxManage controlvm [name] keyboardputscancode 1d 38 e0 53
, отправит Ctrl + Alt + Delete
, и VBoxManage controlvm [name] keyboardputscancode 38 24
отправит Alt + J
.
преимущество этого метода - Вы, не должны устанавливать программное обеспечение, даже гостевые дополнения. Вы не должны устанавливать сеть, ssh, пароли и т.д.
Скэн-коды для ключа могут быть найдены здесь .