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