Цитата: Александр Ерещенко от Вчера в 09:35:18
Кстати, для удобства в скрипте имя VM (или её uuid, что равнозначно) лучше вынести в переменную и уже её использовать в параметрах VBoxManage. А в идеале, считывать этот параметр из конфиг-файла (образцы в init-скриптах есть)
Александр, подскажите Пожалуйста как это делается? Хотя бы с чего начать?
Начать пожалуй надо с основ программирования на bash. Есть старый хороший текст "Advanced Bash-Scripting Guide" например здесь
http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.htmlМожно посмотреть на уже имеющиеся скрипты, там обычно есть строчка типа
SourceIfNotEmpty /etc/sysconfig/clock
В файле /etc/sysconfig/clock , как можете глянуть, есть объявления переменных (с комментариями для удобства). Эти переменные потом используются далее в скрипте.
Например, у вас есть свой файл с конфигом /etc/sysconfig/my_vb_config
# Имя VM для автозапуска
VMNAME="Windows XP Alternative"
В скрипте это используется так (ваши же команды для образца):
SourceIfNotEmpty /etc/sysconfig/my_vb_config
# Запуск
su -l -c "VBoxManage startvm \"$VMNAME\" --type headless" san
# Останов
VBoxManage controlvm "$VMNAME" acpipowerbutton
Кавычки, который обрамляют переменную, обязательны, чтобы корректно отработалось значение переменной (имя VM) с пробелами внутри.
Возник уже Вопрос! Довольно тупой, но... Скажите, а как проконтролировать процесс завершения работы Гостевой?
Список запущенных VM можно увидеть так:
VBoxManage list runningvms
Можно анализировать вывод этой команды - если пусто, то все уже завершились.
if [ -z "`VBoxManage list runningvms`" ]
then
echo "Никто не запущен"
else
echo "Кто-то выполняется"
fi
Обратите внимание на обратные кавычки, которые обрамляют команду - это означает, что будет использоваться вывод этой команды, подробнее читать в руководстве по BASH
ЗЫ. Напоминание: практически все консольные и не только консольные программы выдают подсказку по своим аргументам, если запустить их в консоли с ключом --help