28 нояб. 2010 г.

Скрипт перезапуска/приостановки работающих ВМ

Источник http://tech.hj60.com/suspending-all-virtualbox-vms-easily.

Если у вас одновременно работает несколько виртуальных машин на virtualbox, то этот сценарий поможет вам автоматически сохранять их состояние при запуске и включении хоста.

#!/bin/bash
# Save the state of all running VMs or start all saved VMs.
# Сохраняет состояние всех работающих ВМ и запускает все сохраненные ВМ

NO_ARGS=0
E_OPTERROR=85

if [ $# -eq "$NO_ARGS" ]
then
echo "Usage: `basename $0` save|start|status"
exit $E_OPTERROR
fi

case "$1" in
"save" )
for vm in `VBoxManage -q list runningvms | cut -d"{" -f2 | cut -d"}" -f1`; do VBoxManage -q controlvm $vm savestate; done
sleep 1s
VBoxManage -q list -l vms | egrep -e '(^State|^UUID|^Name)'
;;
"start" )
VBoxManage list -l vms | egrep -e '(^State|^UUID)' >/tmp/vboxscript.$$
export IFS=$'\n'
for line in `cat /tmp/vboxscript.$$`
do
if [[ $line == UUID* ]]
then
unset STATE
UUID=`echo $line | tr -s " " | cut -d" " -f2`
elif [[ $line == State* ]]
then
STATE=`echo $line | tr -s " " | cut -d" " -f2-3 | cut -d"(" -f1`
fi
if [ "$STATE" = "saved " ]
then
nohup /usr/bin/VBoxHeadless -startvm $UUID >/dev/null 2>&1 &
fi
done
unset IFS
rm -f /tmp/vboxscript.$$
sleep 10s
VBoxManage -q list -l vms | egrep -e '(^State|^UUID|^Name)'
;;
"status" )
VBoxManage -q list -l vms | egrep -e '(^State|^UUID|^Name)'
;;
esac

Комментариев нет:

Архив блога