ddns and ping
2 Февраль 2010
есть 2 ip. если один из них недоступен надо обновить A запись в DNS
генерим ключи для nsupdate
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER NSUPDATEполучаем 2 файлика
Knsupdate.+157+13990.key Knsupdate.+157+13990.privateна основе Knsupdate.+157+13990.private делаем запись в named.conf
key NSUPDATE {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret SCtSlSUwGYN3SdbUQgHJdQ==;
};
zone "dyn.net" {
type master;
allow-update { key "NSUPDATE"; };
file "master/dyn.net";
};а Knsupdate.+157+13990.key используем в скрипте
#!/bin/sh
curr=$(dig +short server.dyn.net @192.168.133.30)
#echo $curr
#exit
dt=`/bin/date +'%Y-%m-%d %H:%M:%S'`
prime=$(dig +short server1.stat.net @192.168.133.30)
second=$(dig +short server2.stat.net @192.168.133.30)
res=$(ping -c 2 $prime)
if [[ $? -ne 0 ]]
then
if [ "$curr" = "$prime" ]
then
echo "$dt ERROR! $prime not responding change to $second" >> /var/log/dynsip.log
echo "server 192.168.133.30" > /var/tmp/nsupdate
echo "zone dyn.net" >> /var/tmp/nsupdate
echo "update delete server.dyn.net IN A" >> /var/tmp/nsupdate
echo "update add server.dyn.net 60 IN A $second" >> /var/tmp/nsupdate
echo "send" >> /var/tmp/nsupdate
/usr/bin/nsupdate -k /home/manov/Knsupdate.+157+13990.key /var/tmp/nsupdate
fi
else
if [ "$curr" != "$prime" ]
then
echo "$dt OK! $prime is alive" >> /var/log/dynsip.log
echo "server 192.168.133.30" > /var/tmp/nsupdate
echo "zone dyn.net" >> /var/tmp/nsupdate
echo "update delete server.dyn.net IN A" >> /var/tmp/nsupdate
echo "update add server.dyn.net 60 IN A $prime" >> /var/tmp/nsupdate
echo "send" >> /var/tmp/nsupdate
/usr/bin/nsupdate -k /home/manov/Knsupdate.+157+13990.key /var/tmp/nsupdate
fi
fi

