至於上次說自行重啟怕會有問題,所以現在只敢用 rndc flush 把 cache 清掉,這樣查詢不到的 negative cache 也就清掉了,不過這招似乎只對這種偶發性查不到某個特定FQDN有效就是了,若是其他問題應該不會有效果,可能還會因為清掉 cache 造成一點頻寬浪費。
以下是script:
#!/bin/sh
#
# 測試特定的 FQDN 是否查詢得到,若有問題則 log 並 mail
#
DATE=`date "+%Y%m%d %H:%M"`
HOST=`hostname -s`
SERVER=`hostname -f`
LOG=/var/log/named/fqdn_check.log
MAIL="admin@domain.com.tw"
TMPFILE=/tmp/`date "+%Y%m%d%H%M%S"`_fqdn_check.tmp
MAIL_SUBJECT=""
# 要測試的 FQDN
FQDN="www.domian.com.tw."
# 全部要測試的 DNS
DNSLIST="127.0.0.1
dns.hinet.net.
dns.seed.net.tw."
# 若測試任一 FQDN 有問題則設為 1,最後依此變數決定有沒有問題
CHECK=0
# 依序測試 DNLIST 裡的各個 FQDN
for DNS in $DNSLIST
do
echo >> $TMPFILE
echo "# host $FQDN $DNS" >> $TMPFILE
host $FQDN $DNS| grep address >> $TMPFILE
if [ $? -ne 0 ] ; then
CHECK=1
echo $DATE $HOST $FQDN dns query fail: $DNS >> $LOG
MAIL_SUBJECT="$MAIL_SUBJECT$DNS "
fi
done
# 若有任何一個 FQDN 測試有問題,則 E-mail 通知
if [ $CHECK -eq 1 ] ; then
MAIL_SUBJECT="[$HOST] $DATE $FQDN dns query error: $MAIL_SUBJECT"
mail -s "$MAIL_SUBJECT" $MAIL < $TMPFILE
host $FQDN 127.0.0.1| grep address
if [ $? -ne 0 ] ; then
/usr/sbin/rndc flush
fi
fi
rm $TMPFILE
有用你的程式來測試
回覆刪除結果有出現錯誤訊息
date: extra operand `%H:%M\241\250'
Try `date --help' for more information.
date: invalid date `\241\247+%Y%m%d%H%M%S\241\250'
./qq1.sh: line 11: unexpected EOF while looking for matching `"'
./qq1.sh: line 51: syntax error: unexpected end of file
請問是否可提供修正
一個也要管理dns的人
謝謝喔
<p>To rock:</p>
回覆刪除<p>1. 你的系統 locale 是否不是 big5?date 後面的參數建議你在編輯器裡手動輸入試試</p>
<p>2. 11行用 MAIL_SUBJECT="" 用兩個雙引號試試<br />
3. 改掉以上的錯誤以後如果 51行的錯誤訊息還有出現,再檢查一下漏了哪個該成對的符號。</p>
感謝你的指教
回覆刪除我是把“ ”
都改成 " "
程式才可以執行
作業系統是FEDORA 5 中文版