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