DNS проблеми

Понеже съм уникален кретен и пиша ужасно не мърлив и недообмислен код, успях да оставя без достъп до хостинг машината ми за цяла вечер. Проблема се оказа малоумно тривиален ама кой да мисли на време.

#!/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. Малоумно нали 😉

2 comments

  1. Не мога да не се въздържа и да не репликирам със следния виц:
    На Иванчо са му дали 3 ябълки.
    Той е изял 2.
    Колко ябълки има Иванчо?
    Мислите си че 1?
    Ама никъде не е казано, колко ябълки е имал Иванчо преди да му дадат 3-те.
    Извод – нулирайте си променливите!

    Всички сме ги правили тези грешки, аз няма да забравя, когато цяла зона ми умря заради една долна черта. Вече долнтие черти си ги заменям с тирета и си чета рфц-тата редовно.
    Важното е следващия път варианта с липсващо ай пи да ни е на ум. 🙂

    1. 😀 Дам 12 са били :)))) Ами Мисля че както промених скрипта няма да се осерат нещата. Иначе дам хубаво е човек да си вади поуки и да не пише калпаво с леви крак 😉

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *