DynDNS Update-Skript

Die meisten Router haben eine Funktion für ein DynDNS-Update integriert. Manchmal sind dort aber nur vorgefertigte Provider hinterlegt, so dass man keinen anderen/eigenen Service nutzen kann. Abhilfe schaft da ein eigenes Skript zum automatischen DynDNS-Update.

Zuerst benötigen wir evtl. ein paar Packages:

$ sudo apt update
$ sudo apt install curl dnsutils coreutils

Jetzt erstellen wir uns eine Datei dyndns.sh mit folgendem Inhalt:

#!/bin/bash
configfile=${0}.config
if [ -e $configfile ]
then
    . $configfile
else
    echo '########################'
    echo '# DynDNS configuration #'
    echo '########################'
    read -p "DynDNS Server: " server
    echo "server=$server" > $configfile
    read -p "DynDNS User: " user
    echo "user=$user" >> $configfile
    read -p "DynDNS Password: " pass
pass=$(base64 <<< $pass) echo "pass=$pass" >> $configfile
read -p "DynDNS Dynamic A Record: " host echo "host=$host" >> $configfile echo echo "Configfile created" exit 2 fi current_ip=$(dig -4 +short ${host} @${server}) wan_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com) if [ "$current_ip" != "$wan_ip" ] then
pass=$(base64 -d <<< $pass) curl -s -o /dev/null --insecure -u "${user}:${pass}" "https://${server}/nic/update?hostname=${host}&myip=${wan_ip}" fi

Datei ausführbar machen:

$ chmod 755 dyndns.sh

Die Datei einmal ausführen, damit die benötigten Daten abgefragt und in einer Konfigurationsdatei abgespeichert werden:

$ ./dyndns.sh 
########################
# DynDNS configuration #
########################
DynDNS Server: members.dyndns.org
DynDNS User: myuser
DynDNS Password: mypassword
DynDNS Dynamic A Record: myhomeip.dyndns.org

Configfile created

Zum Schluss einmal testen, ob es funktioniert. Daher noch mal das Skript aufrufen. 

Hat alles geklappt, kann das Skript in die /etc/crontab mit aufgenommen werden:

*/1 * * * * /path/to/script/dyndns.sh