Mit diesem Script wird Ihre öffentliche IP-Adresse automatisch in Poweradmin aktualisiert.
Das ist z.B. dann wichtig, wenn Sie einen Internetanschluss mit dynamischer IP-Adresse haben und trotzdem einen festen Hostnamen verwenden möchten.


1. Voraussetzungen

Um das Script nutzen zu können, benötigen Sie:

  • Ein Linux-System (z.B. Debian, Ubuntu, etc.)

  • Zugangsdaten für den DNS Cluster:

    • DynDNS-Benutzername

    • DynDNS-Passwort

  • Zugriff auf die Shell (SSH)

  • Installierte Programme:

    • bash

    • curl

Diese Dinge sind auf den meisten Linux-Servern bereits vorhanden.


2. Script herunterladen

Laden Sie das Script auf Ihren Server herunter, zum Beispiel in /usr/local/sbin:

sudo mkdir -p /usr/local/sbin
cd /usr/local/sbin

sudo curl -o DNSUpdate.sh "https://git.onesystems.ch/system-tools/scripts/raw/master/DNSUpdate.sh"
sudo chmod +x DNSUpdate.sh

Damit ist das Script ausführbar.


3. Script konfigurieren

Öffnen Sie das Script mit einem Editor, z.B. nano:

sudo nano /usr/local/sbin/DNSUpdate.sh

Passen Sie folgende Werte an: DDNS_USER und DDNS_PASS
Tragen Sie hier Ihren DynDNS-Benutzernamen und das dazugehörige Passwort ein:

  • DDNS_USER="ihr-benutzername"
  • DDNS_PASS="ihr-passwort"

Optional:

  • DEBUG=1
    Wenn Sie Probleme bei der Einrichtung haben, können Sie den Debug-Modus temporär aktivieren:

Speichern Sie die Datei und schliessen Sie den Editor.
In nano: Strg + O → Enter → Strg + X.


4. Testlauf des Scripts

Führen Sie einen ersten Test manuell aus:

/usr/local/sbin/DNSUpdate.sh

Typische erfolgreiche Ausgabe sieht zum Beispiel so aus:

2025-12-01 12:00:00 [INFO] IP changed: '' '' -> 'v4' '203.0.113.45'
2025-12-01 12:00:01 [INFO] Sending DynDNS update to Poweradmin (v4: 203.0.113.45)...
2025-12-01 12:00:01 [INFO] DynDNS update successfully completed (v4: 203.0.113.45).

Falls die IP noch gleich ist und bereits eingetragen war, erscheint z.B.:

2025-12-01 12:05:00 [INFO] IP unchanged (v4: 203.0.113.45), no update necessary.

Fehlermeldungen beginnen mit [ERROR] und geben Hinweise, woran es liegt (z.B. falsche Zugangsdaten oder keine Verbindung).


5. Automatische Ausführung per Cronjob

Damit Ihre DNS-Einträge automatisch aktuell bleiben, sollte das Script regelmässig ausgeführt werden, z.B. alle 5 Minuten.

5.1 Cronjob für den aktuellen Benutzer

Öffnen Sie die Crontab:

crontab -e

Fügen Sie folgende Zeile ein:

*/5 * * * * /usr/local/sbin/DNSUpdate.sh >> ~/.poweradmin-dyndns/dyndns.log 2>&1

Das bedeutet:

  • Alle 5 Minuten wird das Script ausgeführt.

  • Ausgaben werden in ~/.poweradmin-dyndns/dyndns.log gespeichert.

5.2 Cronjob als root

Falls das Script als root laufen soll:

sudo crontab -e

und z.B.:

*/5 * * * * /usr/local/sbin/DNSUpdate.sh >> /var/log/dyndns.log 2>&1

6. Funktionsweise im Hintergrund

Das Script arbeitet in mehreren Schritten:

  1. Ermittlung der aktuellen öffentlichen IP-Adresse über IP_SERVICE_URL.

  2. Erkennen, ob es sich um IPv4 oder IPv6 handelt.

  3. Vergleich mit der zuletzt gespeicherten IP in:

    • ~/.poweradmin-dyndns/last_ip

  4. Nur bei Änderung der IP wird ein Update an Poweradmin geschickt.

  5. Die Antwort des Servers wird geprüft.
    Erfolgreich sind z.B. Antworten wie:

    • good ...

    • nochg ...

    • Your hostname has been updated.

So werden nur dann Updates gesendet, wenn sich Ihre IP tatsächlich ändert.


7. Fehlerbehebung

Falls etwas nicht funktioniert, können Sie folgende Punkte prüfen:

  1. Debug-Modus aktivieren
    Im Script:

    DEBUG=1

    Danach Script erneut ausführen und die detaillierte Ausgabe ansehen.

  2. Logdatei prüfen
    Wenn Sie eine Logdatei per Cron angelegt haben (z.B. ~/.poweradmin-dyndns/dyndns.log oder /var/log/dyndns.log), prüfen Sie diese auf [ERROR]-Zeilen.

  3. Zugangsdaten kontrollieren

    • Stimmt DDNS_HOSTNAME genau mit dem Eintrag in Poweradmin überein?

    • Sind Benutzername und Passwort korrekt?

  4. Internetverbindung & Firewall

  5. Berechtigungen

    • Script muss ausführbar sein:

      ls -l /usr/local/sbin/DNSUpdate.sh

      Ausgabe sollte ein x in der Berechtigung enthalten, z.B.:

      -rwxr-xr-x ...
Was this answer helpful? 34 Users Found This Useful (137 Votes)