named の init 作成

スポンサーリンク

自宅サーバーには BIND9 を入れて内向けの DNS を立てている。
いちいち ISP の DNS にクエリー出してその戻りを参照しにいくのに
外側に出て行くのはパフォーマンス的にももったいない物がある。
その点、自宅に DNS を立てておけば LAN 内にあるサーバーへ
アクセスするので速度は速い。そして出したクエリーの結果は
暫くキャッシュされるので ISP の DNS まで行くこともなく、
Resolver は自前 DNS からの応答を引っ張って各ソフトが参照するだけ。

そんなアレで、インストールだけしていた BIND さんな訳だが、
サーバー再起動時に自動実行するようスクリプトを書いていなかった。
init スクリプトですな。
Linux だけど シェルは bash でなくて sh で書きました。
中身はとーーーてもきちゃないものだけど、ちゃんと動くので良しとする。
実はというか俺、シェル苦手です(苦笑

書いた init スクリプトでもはっ付けておくかなと。

#!/bin/sh
#
# named init scripts
#                                                                    2006/04/26

# Set variables.
PID="/var/named/named.pid"
BIN="/usr/local/sbin/named"
USR="named"

start() {
        printf "Starting BIND DNS System: "
        if [ -f ${PID} ]; then
                printf "Failedn"
        else
                ${BIN} -u ${USR}
                printf "Startn"
        fi
}

stop() {
        printf "Stopping BIND DNS System: "
        if [ -f ${PID} ]; then
                kill -TERM `cat ${PID}`
                printf "Stopn"
                [ -f ${PID} ] && rm -f ${PID}
        else
                printf "Not running BINDn"
                exit 1
        fi
}

restart() {
        printf "Restarting BIND DNS System: "
        if [ -f ${PID} ]; then
                kill -HUP `cat ${PID}`
                printf "Restartedn"
        else
                printf "Not running BINDn"
                exit 1
        fi
}

status() {
        if [ -f ${PID} ]; then
                printf "DNS System available.n"
        else
                printf "DNS System do not available.n"
        fi
}

# Main
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                restart
                ;;
        status)
                status
                ;;
        *)
                printf "Usage: $0 {start|stop|restart|status}n"
                exit 1
esac

exit $?
スポンサーリンク