rc.d скрипт автозапуска Virtualbox для FreeBSD

Несколько вариантов скрипта для автоматического запуска виртуальных машин.

Вариант 1.

#!/bin/sh

. /etc/rc.subr
BASEDIR=»/usr/local/bin/»
USER=»vbox_user»
name=»vms»
start_cmd=»${name}_start»
stop_cmd=»${name}_stop»

vms_start()
{
if [ -x ${BASEDIR}/VBoxManage ]; then
echo «Starting virtual machines…»
su -l ${USER} -c «${BASEDIR}/VBoxManage startvm JUPITER —type headless» >/dev/null 2>&1
su -l ${USER} -c «${BASEDIR}/VBoxManage startvm PLUTO —type headless» >/dev/null 2>&1
fi
}

vms_stop()
{
if [ -x ${BASEDIR}/VBoxManage ]; then
echo «Saving virtual machines state…»
su -l ${USER} -c «${BASEDIR}/VBoxManage controlvm JUPITER savestate» >/dev/null 2>&1
su -l ${USER} -c «${BASEDIR}/VBoxManage controlvm PLUTO savestate» >/dev/null 2>&1
fi
}

load_rc_config $name
run_rc_command «$1»

Вариант 2.

#!/bin/sh

# PROVIDE: vms
# REQUIRE: vboxnet
# KEYWORD: shutdown

. /etc/rc.subr
BASEDIR=»/usr/local/bin/»
USER=»vbox_user»
name=»vms»
rcvar=${name}_enable
start_cmd=»${name}_start»
stop_cmd=»${name}_stop»

vms_start()
{
if [ -x ${BASEDIR}/VBoxManage ]; then
echo «Starting virtual machines…»
su -l ${USER} -c «${BASEDIR}/VBoxManage startvm JUPITER —type headless» >/dev/null 2>&1
sleep 15
su -l ${USER} -c «${BASEDIR}/VBoxManage startvm PLUTO —type headless» >/dev/null 2>&1
fi
}

vms_stop()
{
if [ -x ${BASEDIR}/VBoxManage ]; then
echo «Saving virtual machines state…»
su -l ${USER} -c «${BASEDIR}/VBoxManage controlvm JUPITER savestate» >/dev/null 2>&1
su -l ${USER} -c «${BASEDIR}/VBoxManage controlvm PLUTO savestate» >/dev/null 2>&1
fi
}

load_rc_config $name
: ${vms_enable=»NO»}
run_rc_command «$1»

Вариант 3.

#!/bin/sh
# PROVIDE: vbox
# REQUIRE: LOGIN NETWORKING SERVERS
# KEYWORD: shutdown

. /etc/rc.subr

name=»vbox»
rcvar=`set_rcvar`

load_rc_config $name

: ${vbox_enable=»NO»}
: ${vbox_user=»»}
: ${vbox_virtual=»»}

pidfile=»/var/run/${name}.pid»
command=»/usr/local/bin/VBoxManage»

start_cmd()
{
VPID=`ps -U ${vbox_user} |grep VBoxHeadless |grep ${vbox_virtual} |awk ‘{print $1}’`
if [ «$VPID» = «» ] ; then
echo «Starting vboxwebsrv…»
su -l ${vbox_user} -c «VBoxManage startvm —type headless ${vbox_virtual}»
echo $VPID > ${pidfile}
echo «Done.»
else
echo «no start have runing service pid $VPID «
fi
}

stop_cmd()
{
VPID=`ps -U ${vbox_user} |grep VBoxHeadless |grep ${vbox_virtual} |awk ‘{print $1}’`
if [ «$VPID» != «» ] ; then
echo «stop vbox…»
su -l ${vbox_user} -c «VBoxManage controlvm ${vbox_virtual} acpipowerbutton»
rm -f ${pidfile}
echo «Done.»
else
echo «No runing service»
fi
}

status_cmd()
{
su vb -c «VBoxManage list runningvms | grep ${vbox_virtual}»
VPID=`ps -U ${vbox_user} |grep VBoxHeadless |grep ${vbox_virtual} |awk ‘{print $1}’`
if [ «$VPID» != «» ] ; then
echo Service runing pid $VPID
ps axu -U ${vbox_user} |grep VBoxHeadless |grep ${vbox_virtual} |awk ‘{print «pid:»$2» «»%CPU:» $3″ «»memMB:»$6 }’
else
echo «No runing service»
fi
}

start_cmd=»start_cmd»
stop_cmd=»stop_cmd»
status_cmd=»status_cmd»

run_rc_command «$1»

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий