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.