Raspberry Pi / Linux – IPv64.net DynDNS Update Script

Wer in seinem Homelab einen Raspberry Pi als zentraler Dienst laufen hat, will gegebenenfalls auch auf diesen von außen zugreifen. Mit diesem Script kann man relativ leicht die anliegende IP-Adresse direkt aus einem Linux heraus aktualisieren.

Das Script überprüft zusätzlich, ob ein DynDNS Update überhaupt aktuell nötig ist.

Die Variablen „Domain“ und „DOMAIN_TOKEN“ müssen von dir ausgefüllt werden. Speichere einfach dieses Script auf deinem System unter z.B. den Namen „ipv64_dyndns_updater.sh“ ab und führe es regelmäßig mit einem Crontab einfach aus. Wenn der Cronjob alle 5 Minuten überprüft, ob ein Aktualisieren nötig ist, dann bist du auch bei einem IP-Wechsel sehr schnell wieder erreichbar.

Das Script solltest du ebenfalls ausführbar machen mit „chmod +x ipv64_dyndns_updater.sh“ und dann einfach mal testen mit ./ipv64_dyndns_updater.sh.

#!/bin/bash

# Configuration
DOMAIN="raspberry.ipv64.de"
DOMAIN_TOKEN="DOMAIN_TOKEN"
DYNDNS_PROVIDER="https://ipv64.net/nic/update"

# Get current public IP
CURRENT_IP=$(curl -s https://checkip.amazonaws.com)

# Get the currently stored IP in DNS
DNS_IP=$(dig +short "$DOMAIN")

# Check if the IP has changed
if [ "$CURRENT_IP" != "$DNS_IP" ]; then
    echo "IP has changed. Sending update..."
    RESPONSE=$(curl -s "$DYNDNS_PROVIDER?key=$DOMAIN_TOKEN&domain=$DOMAIN&ip=$CURRENT_IP")
    echo "Server response: $RESPONSE"
else
    echo "IP has not changed. No update needed."
fi

Diesen Cronjob kannst du einrichten damit das Script alle 5 Min. ausgeführt wird. Öffne dafür dein Crontab mit dem Befehl crontab -e.

*/5 * * * * cd /root/; /bin/sh ipv64_dyndns_updater.sh

2 Gedanken zu „Raspberry Pi / Linux – IPv64.net DynDNS Update Script

  1. Werner Antworten

    Um das Script ausführbar zu machen, müsste es doch eigentlich „chmod +x“ und nicht „chown +x“ heißen, oder? 😉

    Ansonsten sehr schön einfaches und funktionales Script.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert