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