給mydns加上自動檢測功能

MYDNS沒有自動檢測主機是否存活的功能,隨手寫了一個SHELL來實現這個功能

首先,給mysql中的rr表加一個active的字段,emun 1 或 0 1表示啓動,0表示禁用

再修改/etc/mydns.conf

zone-cache-size = 1024          # Maximum number of elements stored in the zone cache
zone-cache-expire = 60          # Number of seconds after which cached zones expires
reply-cache-size = 1024         # Maximum number of elements stored in the reply cache
reply-cache-expire = 10         # Number of seconds after which cached replies expire
儘量緩存的時間小點,這樣修改過的域名,很會快生效,可能也會對MYSQL有一定的影響!

腳本如下:

--------check.sh--------------------------------

#!/bin/bash
#auther:akin520
#blog: http://badb0y.cublog.cn and http://badb0y.blog.51cto.com

#set mysql config
MYSQL_BIN=/usr/local/mysql/bin
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PWD=root
stty erase ^h

mysql_ip=`$MYSQL_BIN/mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD -e "select * from mydns.rr where type='A';"|awk 'NR>1 {print $5}'`

for x in $mysql_ip
  do
    ping -c1 -W1 $x
    result=$?
    if [[ $result -eq 0 ]]
      then
        echo "server $x active!"
        $MYSQL_BIN/mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD -e "UPDATE mydns.rr SET active=\"1\" WHERE DATA=\""$x"\";"
    else
        echo "server $x down!"
        $MYSQL_BIN/mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD -e "UPDATE mydns.rr SET active=\"0\" WHERE DATA=\""$x"\";"
    fi
  done

只是一個簡單的PING做檢測,速度太慢!如果誰有更快的方便,,一定要告訴我噢,和和!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章