因为我是独一无二的挺举和写入可怕marliv和半生不熟的代码, 我离开没有访问机器托管我整个晚上. 原来,这个问题是一个低能儿微不足道,但时间有什么想法.

#!/bin/bash -x
wget http://checkip.dyndns.org/ -O /tmp/ipaddr
IPADDR=$(cat /tmp/ipaddr | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
IPADDROLD=$(cat /tmp/ipaddr_old | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]
then
 sed -i "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$IPADDR/" /etc/bind/neo2shyalien.eu
 /etc/init.d/bind9 restart
 echo "server localhost" > /tmp/nsupdate
 echo "zone neo2shyalien.eu" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. A" >> /tmp/nsupdate
 echo "update delete ns.neo2shyalien.eu. CNAME" >> /tmp/nsupdate
 echo "update add ns.neo2shyalien.eu. 38400 A $IPADDR" >> /tmp/nsupdate
 echo "update add *.neo2shyalien.eu. 38400 CNAME ns.neo2shyalien.eu." >> /tmp/nsupdate
 echo "show" >> /tmp/nsupdate
 echo "send" >> /tmp/nsupdate
 echo "" >> /tmp/nsupdate
 /usr/bin/nsupdate -k /etc/Kns.neo2shyalien.eu.+157+59417.private -d /tmp/nsupdate
 mv /tmp/ipaddr /tmp/ipaddr_old
fi

这是现在修正后的脚本不会犯错. 我将解释在那里有问题的部分现在解释什么使脚本. 至少我有一个动态公网IP. 我把上面的脚本来检查我的地址的改变,如果改变,以改变机器的设置和发送关于我的域名信息, 改变. 总体而言微不足道的剧本,但我被可怕的疯狂的遗漏. 在您检查地址变更的部分

if [ "$IPADDR" != "$IPADDROLD"  -a "$IPADDR" != "" ]

之前,它是

if [ "$IPADDR" != "$IPADDROLD"]

因此,采取第二个IP地址后,在线完成并整理他们,如果他们是相同的,如果错过了不同的更新. 在以前的版本我已经错过了某些原因,剧本我已经决定,我IP =一个非常重要的错误 “” (нищо) и пренаписало конфигурацията на bind-а ми с празно поле и при следващата смяна вече не може да пренапише правилно конфигурацията което води липса на връзка с nameservr-a. Малоумно нали 😉