victor00000, спасибо что напомнили подправить..
сменил на
--type headless
Так же решил вопрос по поводу запуска, надо было скопировать файл VirtualBox.xml из директории ~/vbox/.VirtualBox, в такую же директории у root. И сменил пользователя в файле: /etc/default/virtualbox
на такое содержимое:
VBOXWEB_USER='root'
VBOXWEB_HOST=192.168.ххх.ххх
VBOXWEB_PORT=18083
После чего обязательно:
/etc/init.d/vboxweb-service restart
И если не перенести тот файлик, то покажет пустой веб интерфейс. А вот когда переносим то показывает машинки.
Еще одна проблема вылезла. В отдельной теме думаю обсудить надо.
Спасибо кто читал и отвечал
Прикладываю конечный скрипт целиком:
#!/bin/sh
#v0.4
TIMEOUT=30 #Таймаут в секундах на заверщение работы. =DELAY*TIMEOUT. Для каждой виртуальной машины
DELAY=2 #Задержка проверки.
STARTDELAY=15 #Задержка в секундах перед стартом следующей машины
vms="ххх" #Список виртуальных машин
case $1 in
#START
start)
for vm in $vms
do
if /usr/bin/VBoxManage showvminfo "$vm" | grep "running" -c > /dev/null
then echo Virtual Machine "$vm" already running
else
VBoxManage startvm "$vm" --type headless
sleep $STARTDELAY
fi
done
;;
#STOP
stop)
for vm in $vms #Виртуальные машины через пробел. Регистрозависимо.
do
COUNT=1
if /usr/bin/VBoxManage showvminfo "$vm" | grep "running" -c > /dev/null
then /usr/bin/VBoxManage controlvm "$vm" poweroff #Команда "нажать кнопку питания"
# Гостевая машина должна выполнять какое-либо действие (логично, что это выключение или спячка)
# при нажатии кнопки питания. Иначе она будет просто убита по таймауту.
# К примеру, cерверные версии Windows, по умолчанию, без входа в систему не реагируют на кнопку питания.
echo -n Stopping Virtual Machine $vm.
until [ "$COUNT" -gt "$TIMEOUT" ]
do
sleep $DELAY
echo -n .
if /usr/bin/VBoxManage showvminfo "$vm" | grep "powered off" -c > /dev/null
then echo "done"
break
fi
let "COUNT += 1"
done
if [ "$COUNT" -gt "$TIMEOUT" ]
then echo -e '\E[31;40mtimeout. "$vm" will be terminated.'; tput sgr0
fi
else
echo Virtual Machine "$vm" not running
fi
done
# killall -r VBox #На всякий случай убить все VBox`ы
;;
#RESTART
restart)
$0 stop
$0 start
;;
#STATUS
status)
for vm in $vms
do
echo Virtual Machine \"$vm\" is $(/usr/bin/VBoxManage showvminfo $vm | grep "State" | awk '{print $2" "$3" "$4 $5}')
done
;;
#LIST ALL VMs
list)
VBoxManage list vms
;;
#USAGE
*)
echo "Usage: /etc/init.d/vboxctrl (start|stop|restart|status|list)"
exit 1;
;;
esac
Да решение указать poweroff возникло из за проблемы с нормальным выключением на одной машине(опишу в другой теме).
Вообще советую использовать
/usr/bin/VBoxManage controlvm "$vm" acpipowerbutton
.
# killall -r VBox #На всякий случай убить все VBox`ы
Эту строку закомментировал, потому что убивал все процессы.. мне это не надо было, они и так при перезагрузке убиваются

А при консольном использовании после стоп давать старт тяжело.. машины запускаются, но в моем случае веб интерфейс не работал. Собственно оставлять или нет выбор каждого.
Да древний, но работает.