כי אני אידיוט ייחודי ולכתוב להחריד קוד 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 2 ו לאסוף אותם אם הם זהים לפספס אם עדכונים שונים. בגרסה הקודמת החמצתי טעות מאוד חשובה מסיבה כלשהי את התסריט החליט שאני IP = “” (нищо) и пренаписало конфигурацията на bind-а ми с празно поле и при следващата смяна вече не може да пренапише правилно конфигурацията което води липса на връзка с nameservr-a. Малоумно нали 😉