ddns and ping

есть 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

Обсуждение закрыто.