#!/bin/bash # # named This shell script takes care of starting and stopping # named (BIND DNS server). # # chkconfig: 345 55 45 # description: named (BIND) is a Domain Name Server (DNS) \ # that is used to resolve host names to IP addresses. # probe: false # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. [ -r /etc/sysconfig/network ] && . /etc/sysconfig/network RETVAL=0 prog="named" # Check that networking is up. [ "${NETWORKING}" = "no" ] && exit 0 [ -f /etc/sysconfig/named ] && . /etc/sysconfig/named [ -f /usr/sbin/named ] || exit 0 [ -f ${ROOTDIR}/etc/named.conf ] || exit 0 start() { # Start daemons. if [ -n "`/sbin/pidof named`" ]; then gprintf "$prog: already running" return 1 fi gprintf "Starting %s: " $prog if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then OPTIONS="${OPTIONS} -t ${ROOTDIR}" fi daemon named -u named ${OPTIONS} RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named echo return $RETVAL } stop() { # Stop daemons. gprintf "Stopping %s: " $prog /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf stop "$1" RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named || { killproc named RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named echo return $RETVAL } success echo return $RETVAL } trace() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf trace "$1" return $? } notrace() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf notrace return $? } status() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf status return $? } restart() { stop # wait a couple of seconds for the named to finish closing down sleep 2 start } reload() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf reload "$1" >/dev/null 2>&1 || /usr/bin/killall -HUP named return $? } refresh() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf refresh "$1" return $? } retransfer() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf retransfer "$1" return $? } freeze() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf freeze "$1" return $? } thaw() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf thaw "$1" return $? } probe() { # named knows how to reload intelligently; we don't want linuxconf # to offer to restart every time /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf reload >/dev/null 2>&1 || echo start return $? } reconfig() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf reconfig return $? } stats() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf stats return $? } querylog() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf querylog return $? } dumpdb() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf dumpdb return $? } flush() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf flush "$1" return $? } flushname() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf flushname "$1" return $? } recursing() { /usr/sbin/rndc -c ${ROOTDIR}/etc/rndc.conf recursing return $? } # See how we were called. case "$1" in start) start ;; stop) stop "$2" ;; halt) halt "$2" ;; trace) trace "$2" ;; notrace) notrace ;; status) status ;; restart) restart ;; condrestart) [ -f /var/lock/subsys/named ] && restart ;; reload) reload "$2" ;; refresh) refresh "$2" ;; retransfer) retransfer "$2" ;; freeze) freeze "$2" ;; thaw) thaw "$2" ;; probe) probe ;; reconfig) reconfig ;; stats) stats ;; querylog) querylog ;; dumpdb) dumpdb ;; flush) flush "$2" ;; flushname) flushname "$2" ;; recursing) recursing ;; *) gprintf "Usage: %s {start|stop|halt|status|restart|condrestart|trace|notrace|reload|refresh|retransfer|freeze|thaw|probe|reconfig|stats|querylog|dumpdb|flush|flushname|recursing}\n" $0 exit 1 esac exit $?