Der Titel kommt dir bekannt vor? Richtig, denn ich habe bereits einen Blog-Post hierfür verfasst, wo ich ein DynDNS-Update mit PowerShell realisiert habe. Wer aber seine Domains lieber via Bash auf einem linuxbasierten OS aktualisieren möchte, der kann statt PowerShell einfach Bash verwenden!
Der nachfolgende Code nutzt den Service von ipify.org um die aktuelle Internet-IP-Adresse zu ermitteln. Diese wird in eine Datei im Home-Verzeichnis des Benutzers gespeichert. Ist die abgerufene Adresse im Vergleich zur zwischengespeicherten Adresse unterschiedlich, wird mittels curl das entsprechende DynDNS-Update durchgeführt. Wichtig ist hierbei übrigens, das die Variablen HOST und PASS korrekt zugewiesen worden sind (Zeile 2 und 3).
#!/bin/bash
HOST=domain.de
PASS=mySecretPassword
CUR_IP=$(curl -s https://api.ipify.org)
if [ "$(<~/.oldipaddress)" != "$CUR_IP" ]
then
echo $CUR_IP > ~/.oldipaddress
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $(curl --silent --show-error --insecure --user $HOST:$PASS https://dyndns.strato.com/nic/update?hostname=$HOST)" >> ~/stratologs.txt
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] No change." >> ~/stratologs.txt
fi
Ähnlich wie in der PowerShell-Variante, wird auch hier das Resultat von curl in deine Textdatei geschrieben, um für eventuell spätere Verwendung ein Logfile parat zu haben. Um die DynDNS-Updates nun zu automatisieren, kann man ein Cronjob anlegen, ein systemd.timer oder was auch immer für eine Art schon Scheduler man bevorzugt.