[Pdns-dev] re-worked auth server init script
Marc Haber
mh+pdns-dev at zugschlus.de
Thu Jan 5 11:50:57 CET 2012
Hi,
please consider the attached re-worked init script for the
authoritative server. It does away with the twisted backwards
NOTRUNNING variable which has confused me multiple times in the past.
doPC now returns a meaningful string if pdns is not running, which
eases the use of doPC in the big case, allowing the script to just
print $ret even in the "not running" case, and the pdns_running
function allows idioms like "if pdns_running; then".
Please test before committing, it is currently in the state "works for
me", and only on two test boxes
Greetings
Marc
--
-----------------------------------------------------------------------------
Marc Haber | "I don't trust Computers. They | Mailadresse im Header
Mannheim, Germany | lose things." Winona Ryder | Fon: *49 621 31958061
Nordisch by Nature | How to make an American Quilt | Fax: *49 621 31958062
-------------- next part --------------
#!/bin/sh
# chkconfig: - 80 75
# description: PDNS is a versatile high performance authoritative nameserver
### BEGIN INIT INFO
# Provides: pdns
# Required-Start: $remote_fs $network $syslog
# Required-Stop: $remote_fs $network $syslog
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop PowerDNS authoritative server
# Description: Start/stop PowerDNS authoritative server
### END INIT INFO
set -e
prefix=/usr
exec_prefix=${prefix}
BINARYPATH=${exec_prefix}/bin
SBINARYPATH=${exec_prefix}/sbin
SOCKETPATH=/var/run
[ -f "$SBINARYPATH/pdns_server" ] || exit 0
[ -r /etc/default/pdns ] && . /etc/default/pdns
cd $SOCKETPATH
suffix=`basename $0 | cut -d- -f2- -s`
if [ $suffix ]
then
EXTRAOPTS=--config-name=$suffix
PROGNAME=pdns-$suffix
else
PROGNAME=pdns
fi
pdns_server="$SBINARYPATH/pdns_server $EXTRAOPTS"
doPC()
{
if ! ret=$($BINARYPATH/pdns_control $EXTRAOPTS $1 $2 2> /dev/null); then
ret="not running"
fi
}
pdns_running()
{
doPC ping
if [ "$ret" = "not running" ]; then
return 1
else
return 0
fi
}
case "$1" in
status)
doPC status
echo $ret
;;
stop)
echo -n "Stopping PowerDNS authoritative nameserver: "
doPC quit
echo $ret
;;
force-stop)
echo -n "Stopping PowerDNS authoritative nameserver: "
killall -v -9 pdns_server
echo "killed"
;;
start)
echo -n "Starting PowerDNS authoritative nameserver: "
if pdns_running; then
echo "already running"
else
if $pdns_server --daemon --guardian=yes; then
echo "started"
else
echo "error starting"
fi
fi
;;
force-reload | restart)
echo -n "Restarting PowerDNS authoritative nameserver: "
echo -n stopping and waiting..
doPC quit
sleep 3
echo done
$0 start
;;
reload)
echo -n "Reloading PowerDNS authoritative nameserver: "
if pdns_running; then
doPC cycle
echo requested reload
else
echo not running yet
$0 start
fi
;;
monitor)
if pdns_running; then
echo "already running"
else
$pdns_server --daemon=no --guardian=no --control-console --loglevel=9
fi
;;
dump)
doPC list
echo $ret
;;
show)
if [ $# -lt 2 ]
then
echo Insufficient parameters
exit
fi
echo -n "$2="
doPC show $2
echo $ret
;;
mrtg)
if [ $# -lt 2 ]
then
echo Insufficient parameters
exit
fi
if pdns_running; then
doPC show $2 ; echo $ret
if [ "$3x" != "x" ]
then
doPC show $3 ; echo $ret
else
echo 0
fi
doPC uptime ; echo $ret
echo PowerDNS daemon
else
echo "not running"
fi
;;
cricket)
if [ $# -lt 2 ]
then
echo Insufficient parameters
exit
fi
doPC show $2
echo $ret
;;
*)
echo pdns [start\|stop\|force-reload\|reload\|restart\|status\|dump\|show\|mrtg\|cricket\|monitor]
;;
esac
More information about the Pdns-dev
mailing list