Понеже съм уникален кретен и пиша ужасно не мърлив и недообмислен код, успях да оставя без достъп до хостинг машината ми за цяла вечер. Проблема се оказа малоумно тривиален ама кой да мисли на време.
#!/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"]
Така самия ред прави следното взима 2-та IP адреса и ги сверява ако са еднакви пропуска ако са различни ъпдейтва. В предния вариант бях пропуснал много важна грешка поради някаква причина скрипта ми беше решил че имам IP = „“ (нищо) и пренаписало конфигурацията на bind-а ми с празно поле и при следващата смяна вече не може да пренапише правилно конфигурацията което води липса на връзка с nameservr-a. Малоумно нали 😉