logo

Ubuntu Unity Interface »
« Opera T-Shirt

dyndns update script

Abgelegt unter DNS-313, Linux, NAS und Shellscript am Freitag, den 08. Okt. 2010

Um mein NAS von überall zu erreichen benutze ich den kostenlosen Dienst von www.dyndns.org und normalerweise hat das Update der IP-Adresse immer mein Router übernommen. Allerdings habe ich ja seit einiger Zeit einen neuen Router im Einsatz und irgendwie haut mit dem das automatische Aktualisieren nicht mehr so ganz hin. Im Log stand heute übrigens das hier:

Sun Sep 19 21:15:27 2010 - WAN IP changed to 87.122.71.49, updating to dynamic DNS provider
Sun Sep 19 21:15:28 2010 - Successfully updated dynamic DNS entry for *******.dyndns.org good 127.0.0.1

Scheint also irgendwie nen Problem in der Firmware zu sein...

Aber auch mein NAS hat einen Client für dyndns.org mit an Bord. Also hab ich es ein paar Tage mit dem versucht. Der hat wohl aber keine "prüfe ob neue IP-Adresse" Funktion mit eingebaut. Denn recht schnell habe ich von dyndns eine Email bekommen, das die Update-Intervalle mit der selben IP sind und das der Account geblockt wurde. Also auch das wieder abgeschaltet.

Heute Also habe ich dann ein kleines Shellscript geschrieben, das via cronjob auf dem NAS aufgerufen wird. Mal sehen, wie das klappt.

Hier das Script:

#!/bin/sh

# config
dyndns_user=xxxxx
dyndns_pass=xxxxx
#notify_url=http://xxxxxxxx/mailme.php

dyndns_domain=dyndns.org
dyndns_account=$dyndns_user.$dyndns_domain
dyndns_url=http://$dyndns_user:$dyndns_pass@members.dyndns.org/nic/update?hostname=$dyndns_account
ipcheck_url=http://www.whatismyip.org/
last_ip_file=/tmp/$dyndns_account.last
this_ip_file=/tmp/$dyndns_account.now
status_file=/tmp/$dyndns_account.status

# check, if there is an old ip
# if yes, read it
if [ -f $last_ip_file ]; then
   last_ip=`cat $last_ip_file`
else
   last_ip="0.0.0.0"
fi

# get the current ip
wget -q -O $this_ip_file $ipcheck_url
# and read it
this_ip=`cat $this_ip_file`

if [ $this_ip = $last_ip ]; then
   echo current ip is $this_ip, last ip was $last_ip - no update needed
   
   # notify if $notify_url != empty
   if [ ! -z "$notify_url" ]; then
      wget -q -O /dev/null "$notify_url?ip=$this_ip&status=no-update"
   fi
else
   echo current ip is $this_ip, last ip was $last_ip - updating...
   
   # update dyndns
   wget -q -O $status_file $dyndns_url
   status=`cat $status_file`
   echo status: $status
   
   # write current ip to file for next check
   cp $this_ip_file $last_ip_file
   
   # notify if $notify_url != empty
   if [ ! -z "$notify_url" ]; then
      wget -q -O /dev/null "$notify_url?ip=$this_ip&status=$status"
   fi
fi

Das ich beim starten des NAS's automatisch zu den cronjobs hinzufügen lasse:

echo "00 06 * * * /ffp/bin/dyndns_update.sh&">>/var/spool/cron/crontabs/root

Zur schnellen Erklärung:

Das Script holt sich die aktuelle IP von www.whatismyip.org, prüft ob diese sich von der vorherigen unterscheidet und wenn das der Fall ist, gibt es ein Update bei dyndns. Eigentlich nichts besonders...

Ach ja, wer copy & paste nicht mag, der kann das Script hier herunterladen.

Update: War wohl doch ein Problem der Firmware. Nach einem erneutem flashen der Firmware brauchte ich mein Script nicht mehr. Doch auch wenn das Problem sich erledigt hat, bevor ich diesen Artikel veröffentlicht hatte, ist er vielleicht anderen hilfreich.

Ähnliche Artikel

29.12.2010 - DNS-313: Lighttpd - Verzeichnis mit Passwort schützen
20.02.2011 - DNS-313: Twonky Media Server installieren
26.02.2009 - LCS-8311 - SSH-Server einrichten
13.11.2008 - LCS-8311 - SVN-Server einrichten
24.02.2011 - DNS-313: Leistungsaufnahme und Kosten

Einen neuen Kommentar hinterlassen