JezK
Edit File: pdns
#!/bin/sh ### BEGIN INIT INFO # Provides: pdns # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Should-Start: slapd # Should-Stop: slapd # Short-Description: PowerDNS Authoritative Server # Description: PDNS is a versatile high performance authoritative nameser ### END INIT INFO PATH=/bin:/sbin:/usr/bin:/usr/sbin BINARYPATH=/usr/bin SBINARYPATH=/usr/sbin ODESC="PowerDNS Authoritative Server" DESC="$ODESC" NAME=pdns DAEMON=/usr/sbin/pdns_server DAEMON_ARGS="" CONTROL=/usr/bin/pdns_control PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME [ -x "$DAEMON" ] || exit 0 [ -r /etc/default/pdns ] && . /etc/default/pdns # Handle instance scripts suffix=$(basename $0 | cut -d- -f2- -s) if [ -n "$suffix" ]; then SUFFIX="--config-name=$suffix" DAEMON_ARGS="$DAEMON_ARGS $SUFFIX" NAME="$NAME-$suffix" DESC="$DESC (config name $suffix)" PIDFILE="/var/run/$NAME-$suffix.pid" fi # Load lsb stuff for systemd redirection (if available). if [ -e /lib/lsb/init-functions ]; then . /lib/lsb/init-functions fi # function to invoke properly parametrized pdns_control doPC() { $CONTROL $SUFFIX $1 $2 2> /dev/null return $? } isrunning() { doPC rping > /dev/null return $? } # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started if isrunning; then return 1 fi start-stop-daemon --start --quiet \ --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS --daemon --guardian=yes \ || return 2 } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred doPC quit >/dev/null RETVAL="2" for sec in $(seq 1 5); do if ! isrunning; then RETVAL="0" break fi sleep 1 done [ "$RETVAL" = 2 ] && return 2 rm -f $PIDFILE } case "$1" in start) echo -n "Starting $DESC: $NAME ..." do_start case "$?" in 0|1) echo done exit 0 ;; 2) echo failed exit 1 ;; esac ;; stop) echo -n "Stopping $DESC: $NAME ..." do_stop case "$?" in 0|1) echo done exit 0 ;; 2) echo failed exit 1 ;; esac ;; status) if isrunning; then echo "$NAME is running: $(doPC status)" exit 0 else echo "$NAME is not running" exit 3 fi ;; force-stop) echo -n "Killing $ODESC (all instances): $NAME ..." kill -9 $(pidof pdns_server) case "$?" in 0) echo done exit 0 ;; 1) echo failed exit 1 ;; esac ;; restart) echo -n "Restarting $DESC: $NAME ..." do_stop case "$?" in 0|1) do_start case "$?" in 0) echo done exit 0 ;; 1) echo failed # Old process is still running exit 1 ;; *) echo failed # Failed to start exit 1 ;; esac ;; *) # Failed to stop echo failed exit 1 ;; esac ;; reload|force-reload) echo -n "Reloading $DESC: $NAME ..." if isrunning; then doPC cycle >/dev/null case "$?" in 0) echo done exit 0 ;; 1) echo failed exit 1 ;; esac else echo done exit 7 fi ;; monitor) if isrunning; then echo "already running" exit 1 else $DAEMON $DAEMON_ARGS --daemon=no --guardian=no --control-console --loglevel=9 exit 0 fi ;; dump) if isrunning; then doPC list exit 0 else echo "not running" exit 7 fi ;; show) if isrunning; then if [ $# -lt 2 ]; then echo "Insufficient parameters" exit 2 fi echo -n "$2=" doPC show $2 exit 0 else echo "not running" exit 7 fi ;; mrtg) if isrunning; then if [ $# -lt 2 ]; then echo "Insufficient parameters" exit 2 fi doPC show $2 if [ "$3x" != "x" ]; then doPC show $3 else echo 0 fi doPC uptime echo "$DESC" exit 0 else echo "not running" exit 7 fi ;; cricket) if isrunning; then if [ $# -lt 2 ]; then echo "Insufficient parameters" exit 1 fi doPC show $2 exit 0 else echo "not running" exit 7 fi ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|force-stop|restart|reload|monitor|dump|show|mrtg|cricket}" ;; esac exit 0