Aktionen

DynDNS Update Skript Linux Bash

Aus znilwiki

Vorwort

Ein Kunde nutze seit vielen Jahren eine DynDNS-Adresse - mit einem bezahlten Pro Account.
Leider ist die Windows-DynUpdater-Software schon ziemlich alt, und seit ein paar Tagen funktioniert dieser irgendwie überhaupt nicht mehr.
Ich habe den Account auch in dessen FritzBox eingetragen - das ist aber auch ein älteres Modell von seinem Internet Provider und ich kann nicht sehen was es macht.
Und ich hatte nun schon 2x hintereinander das die Adresse nach der Zwangstrennung nicht neu gesetzt wurde.

Also habe ich mir ein Skript dafür geschrieben welches ich nun entweder über einen CronJob laufen lassen kann oder per Zabbix-Item anstoße.


Skript

#!/bin/bash

# DynDNS-Adresse die aktualisiert werden soll
HOST=euresubdomain.dyndns.org

# DynDNS-Benutzername
USER=Manfred

# DynDNS-Updater Client Key
PASS=1234567890123456789012345678901

# Aktuelle IP-Adresse holen - ist ein .php Skript auf meinem Webserver welche nur die Ip als Text zurück gibt
IPADDR=$(wget -q -O- checkip.znil.org --no-check-certificate)
#IPADDR=$(curl -s https://checkip.znil.org)

# Den DNS-Eintrag der DynDNS-Adresse prüfen in dem wir den Google-DNS Server fragen
DYNIP=$(dig +short @8.8.8.8 $HOST)

# Vergleichen ob die beiden Einträge identisch sind
if [ "$IPADDR" != "$DYNIP" ]
then
    RESULT=$(curl -s "https://$USER:$PASS@members.dyndns.org/v3/update?hostname=$HOST&myip=$IPADDR")
    echo $RESULT
else
    echo nochange $IPADDR
fi
exit 0



Hinweise

Das Skript nutzt eine von mir gehostete Webseite https://checkip.znil.org für die Feststellung der eigenen IP-Adresse.
Dahinter ist eine index.php mit folgenden Inhalt:

<?php
 $input = getenv("REMOTE_ADDR");
 echo $input;
?>

Es wird also nur die IP-Adresse zurück gegeben.
Um den aktuellen DNS-Eintrag zu prüfen wird google gefragt, das System auf dem das Skript läuft muss also auf Port 53 UDP in das Internet dürfen.
Ich hatte extra keinen Internen DNS genommen, das ginge aber auch.
Den "Updater Client Key" für DynDNS findet Ihr in euren Konto-Einstellungen dort. Steht dort keine so könnt Ihr per Knopfdruck einen erstellen.
Das Skript updatet nur wenn es eine Änderung gibt.


Kommentare

Loading comments...