DDClient Debian

Hallo,
ich würde gerne den DynDns Dienst von IPv64 auf einer Debian Maschine mit dem DDClient konfigurieren. Da gibts eine Conf Datei in folgendem Format:

# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

pid=/var/run/ddclient.pid
protocol=dyndns2
use=if, if=ppp0
# use=web, web=checkip.dyndns.org
server=members.dyndns.org
login=loginname
password=geheim
dyndnsdomainname1.dyndns.org,dyndnsdomainname2.dyndns.org

Hat das schonmal jemand gemacht? Ich bräuchte da Unterstützung, falls es damit überhaupt möglich ist…

Viele Grüße

bitte in zukunft die code auch als codeblock formatieren

Hi, hier ein Vorschlag als Grundlage. Ich hab es gekürzt. Bei mir werden 6 Präfix-Domains auf einmal aktualisiert.

#!/bin/bash


# Log-Datei definieren (angepasster Pfad)
log_file="/root/ddns_update.log"

# Aktuelle öffentliche IP-Adresse abrufen
current_ip=$(curl -s https://api64.ipify.org?format=text)

# Vergleiche mit der letzten bekannten IP-Adresse
if [ "$current_ip" != "$(cat /root/last_ip.txt)" ]; then
    # IP-Adresse hat sich geändert, DDNS aktualisieren
     echo "$(date): IP-Adresse muss aktualisiert werden!" >> "$log_file"
     echo "Deine Update Domain :" 
     json_response=$(curl -sSL "https://ipv4.ipv64.net/update.php?key=deinDomainKey&domain=deineDomain")
     status=$(echo "$json_response" | jq -r '.status')
     info=$(echo "$json_response" | jq -r '.info')
     echo "Status: $status "
     echo "Info: $info "
     echo "$(date): Update Domain: Status: $status Info: $info" >> "$log_file"
     echo ""
     sleep 5
     
    # aktuelle IP wird als letzte IP gespeichert
     echo "$current_ip" > /root/last_ip.txt


else
     echo "IP-Adresse noch gueltig!"
    # echo "$(date): IP-Adresse muss nicht aktualisiert werden!" >> "$log_file"

fi
1 „Gefällt mir“

Servus,
also eigentlich wollte ich es ja mit dem ddclient machen aber ich hab schon gesehen das es dafür bereits fertige Scripte gibt :wink:

@ de0508: Hab dein Script mal probiert, bekomme aber die Fehlermeldung „bad substitution“
Hab oben bei mykey meine Update Account URL eingegeben und unten in der letzten Zeile das gleiche bei mykey. Passt das so?

Viele Grüße

Hi, ich hab das selbst gemacht, weil ich 5 Präfix-Domains mit unterschiedlichen Update-Keys(URLs) auf einmal updaten wollte. Außerdem wollte ich jede Minute prüfen aber nicht so viele API-Aufrufe generieren, wegen dem Limit. Also prüfe ich jede Minute bei mir ob sich die IP-geändert hat, und dann werden alle Präfix-Domains geupdated. Man bekommt auch Rückmeldungen der API als Json die ich dann in eine Logdatei schreibe. Falls mal was schief läuft kann ich dann nachschauen. Wenn man mehrer API-Calls macht muss man Sleep-Anweisungen dazwischen setzen, weil die API ein Limit hat und Cool-Down zurückmeldet. Wie auch immer du das umsetzt, viel Erfolg !

Danke für deine Rückmeldung aber ich bin nicht fit genug um das bei mir umzusetzen, deswegen war der Plan ja eigentlich ddclient

Das ist wirklich nicht schwer. Probiere einfach mal. Am Ende hast du jede Menge Zeug gelernt, was du immer wieder gebrauchen kannst.

  • bash script anlegen/anpassen
  • bash script ausführbar machen
  • log datei anlegen
  • last-ip datei anlegen
  • bash script testen
  • cronjob anlegen
  • logdatei prüfen ob cronjob und script ordentlich laufen
1 „Gefällt mir“

Servus,

hab auf dich gehört und bisschen rumprobiert. Und was soll ich sagen, dein Script läuft :wink: Hat eigentlich nach der schwierigeren Variante für mich ausgesehen aber wie du schon sagtest, bissl rumprobieren und schon klappts!

Allerdings bekomme ich den Cronjob nicht hin. Folgendes versuche ich einzugeben:
*/10 * * * * /meinscript.sh (Er soll alle 10 Minuten dieses Script ausführen)

Und crontab -e gibt mir auch ne Fehlermeldung aus, kann es sein das erst ein cron eingerichtet werden muss und deswegen der Befehl nicht geht?

Viele Grüße

Nein, das liegt nicht daran. Wenn crontab -e nicht geht, wie hast du dann den Cronjob hinzugefügt? Was für eine Fehlermeldung?

crontab -e gibt den Fehler -bash: crontab: command not found
Ich hab den cronjob nicht hinzugefügt weils nicht geht bzw. ich habs höchstwahrscheinlich falsch gemacht.
Wie oben geschrieben, so hab ichs probiert
*/10 * * * * /meinscript.sh

So, kurzes Update. Cron musste erst installiert werden. Jetzt konnte ich den Cronjob auch hinzufügen. Ob er läuft werden wir sehen, wenn ich das Script händisch starte dann macht es was es soll, hab die IP paarmal geändert, funktioniert tadellos :wink:

2 „Gefällt mir“