Init-Skript xendomains.local
Init-Skript /etc/init.d/xendomains.local (Debian)
#!/bin/bash
### BEGIN INIT INFO
# Provides: xendomains.local
# Required-Start: xendomains
# Required-Stop: xendomains
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop local xen domains
# Description: Start / stop domains automatically when domain 0
# boots / shuts down.
### END INIT INFO
. /lib/init/vars.sh
. /lib/lsb/init-functions
xen list &> /dev/null
if test $? -ne 0
then
exit 0;
fi
if ! [ -e /proc/xen/privcmd ]; then
exit 0
fi
[ -r /etc/default/xendomains ] && . /etc/default/xendomains
shopt -s nullglob
check_config_name()
{
/usr/lib/xen-common/bin/xen-init-name "$1" 2>/dev/null
}
check_running()
{
xen domid "$1" > /dev/null 2>&1
return $?
}
timeout_domain()
{
name="$1"
TIMEOUT="$2"
for no in $(seq 0 $TIMEOUT); do
if ! check_running "$name"; then return 0; fi
sleep 1
log_action_cont_msg
done
return 1
}
do_stop_shutdown()
{
# which is our actual file-server?
srv=$(ping -qc 1 srv|head -1|cut -d\ -f2|cut -d. -f1)
[ -z "$srv" ] && srv=none
# skip shutdown of some vm's: Domain-N, firewall and file server
while read id name rest; do
case $name in
Domain-N)
;;
opnsense)
;;
$srv)
;;
*)
log_action_begin_msg "Shutting down local Xen domain $name ($id)"
xen shutdown $id 2>&1 1>/dev/null
log_action_end_msg $?
sleep 5
;;
esac
done < <(/usr/lib/xen-common/bin/xen-init-list 2>/dev/null)
sleep 5
# shutdown of some vm's: file-server
while read id name rest; do
case $name in
$srv)
log_action_begin_msg "Shutting down local Xen domain $name ($id)"
xen shutdown $id 2>&1 1>/dev/null
log_action_end_msg $?
sleep 5
;;
*)
;;
esac
done < <(/usr/lib/xen-common/bin/xen-init-list 2>/dev/null)
sleep 5
# shutdown remaining vm's with specific flags: opnsense
while read id name rest; do
case $name in
opnsense*) FLAG=""
log_action_begin_msg "Shutting down local Xen domain $name ($id)"
xen shutdown $FLAG $id 2>&1 1>/dev/null
log_action_end_msg $?
sleep 5
;;
*) FLAG=
log_action_begin_msg "Shutting down local Xen domain $name ($id)"
xen shutdown $FLAG $id 2>&1 1>/dev/null
log_action_end_msg $?
sleep 5
;;
esac
done < <(/usr/lib/xen-common/bin/xen-init-list 2>/dev/null)
}
do_stop()
{
do_stop_shutdown
}
case "$1" in
start)
;;
stop)
do_stop
;;
restart)
;;
reload|force-reload)
;;
*)
echo "Usage: $0 {start|stop|restart|reload|force-reload}"
exit 3
;;
esac
exit 0