- chalblog - https://blog.is-a-geek.org -

ddclient IP Update Problem mit einem Bash-Script einfach lösen

ddclient IP Update Problem mit einem Bash-Script einfach lösen [1]Ich glaube jeder kennt das Problem, dass der Ddclient z.B. nach einem Update einfach die IP bei diversen Dynamic-DNS-Services nicht mehr updaten will. Wenn auch Änderungen der Konfigurationsdatei nicht mehr zum Erfolg führen, ist diese Anleitung, welche beschreibt wie ihr das Problem mit Hilfe eines Scripts ein für alle Mal lösen könnt genau richtig für euch.

Das Skript überprüft mittels Ping, ob die Adresse erreichbar ist und zwingt den Ddclient bei Nichterreichbarkeit zum Update. Dieses Bash-Script kann man dann ganz einfach als Cronjob alle 10 Minuten ausführen lassen.

Man könnte natürlich auch alle 10 Minuten ein Update durchführen, dadurch kann es aber passieren, dass euer Account aufgrund von “Spammerei” gesperrt wird.

Voraussetzung für das Script ist, dass der Ddclient konfiguriert ist und ein erzwungenes Update auch funktioniert.

sudo ddclient -force

Skript

Das Skript pingt die angegebene Adresse. Ist diese nicht erreichbar, wird der Ddclient mit der Option “force” ausgeführt.

Bevor ihr es verwendet, fügt eure DDNS-Adresse ein und wählt das gewünschte Loglevel. Ebenfalls muss die Datei mit dem “chmod”-Befehl ausführbar gemacht werden.

sudo chmod +x ddhelper.sh

Download: ddhelper.sh [2]

#!/bin/bash
# check if ddns is reachable otherwise force ddclient update

#CONFIG

#address for dynamic IP
ADDRESS="yourdnsaddress.com"

#number of pings (default 1)
PINGS=1

#pause between pings (default 3)
PAUSE=3

#logtype:
#0 disable log
#1 only on IP-change
#2 everything
LOGTYPE=1

#path to logfile
LOGFILE="/var/log/ddhelper.log"

#SCRIPT
if [ $LOGTYPE -ge 0 ]; then
 touch $LOGFILE
fi

ping -c $PINGS -i $PAUSE $ADDRESS > /dev/null
if [ $? -eq 0 ]; then
 if [ $LOGTYPE -eq 2 ]; then
  echo "[--]" `date` "-" $ADDRESS "is reachable, nothing to do." >> $LOGFILE;
 fi
else
 if [ $LOGTYPE -ge 0 ]; then
  echo "[XX]" `date` "-" $ADDRESS "is not reachable, forcing update." >> $LOGFILE;
 fi
sudo ddclient --force
fi

Cronjob erstellen

Damit das Script alle 10 Minuten läuft erstellen wir einen Cronjob im Crontab des Roots um es mit Administratorrechten auszuführen. Man öffnet die Datei mit …

sudo crontab -e

… und fügt folgende Zeile am Ende der Datei ein.

*/10 * * * * /PFAD/ZUM/SCRIPT/ddhelper.sh

Jetzt noch speichern und das Skript wird alle 10 Minuten gestartet.

Der eine Ping alle 10 Minuten sollte nicht allzuviele zusätzliche Ressourcen fressen und man erhält dadurch die Sicherheit, dass die IP trotz etwaiger Änderungen durch Updates oder auch Konfiguratiosfehler eingetragen wird.