RasPi Series {5} – Mehrere DynDNS Einträge mit Python Konfigurieren

Weil die FritzBox nicht in der Lage ist, mehrere DynDNS Einträge zu verwalten, musste ich einen Script schreiben, welches diese Aufgabe erledigt.

    Inhaltsangabe
  1. Was ist Python 3?
  2. Der Python 3 Script
  3. Script auf den Raspberry Pi hochladen und ausführen

Im letzten Beitrag haben wir gelernt, was eine Dynamische DNS ist und wozu das gut ist. Wir haben Beispiele gesehen, wo eine Dynamische DNS zum Einsatz kommen kann und wie sehr es uns in unserem Alltag unterstützt.

Jetzt werden wir uns einen Script anschauen, den ich in Python 3 geschrieben habe, um alle meine Subdomains, die mit einer DynDNS verknüpft sind auf meine IP-Adresse zu leiten.

Was ist Python 3?

Python ist eine höhere Programmiersprache, welches aufgrund seiner Möglichkeiten und seiner Performance sehr beliebt ist. Es ist beinahe alles damit möglich und wird auch in sehr vielen Bereichen benutzt.

Python wird auch im zur Programmierung von künstlicher Intelligenz genutzt. Die größten Unternehmen im Internet benutzen ebenfalls diese Programmiersprache für diverse Prozesse. Unter anderem

  1. Google
  2. Facebook
  3. Instagram
  4. Spotify
  5. Netflix
  6. usw.

Ich kann euch leider keinen Crash Kurs zu Python geben, weil die Sprache sehr kompliziert ist und ich selber seit über einem Jahr nicht aus gelernt habe.

Damit ihr trotzdem nachvollziehen könnt, was ich im Code mache, werde ich euch die einzelnen Code-Zeilen kommentieren.

Der Python 3 Script

# Import der nötigen libraries
import urllib.request
import socket

# Die Domains, die ich anspreche und deren Zugangsdaten in eine Variable gespeichert
domains = [
{
    "domain" : "domain1.talhasariyuerek.com",
    "username" : "MyUser1",
    "password" : "MyPassword1"
},
{
    "domain" : "domain2.talhasariyuerek.com",
    "username" : "MyUser2",
    "password" : "MyPassword2"
},
{
    "domain" : "domain3.talhasariyuerek.com",
    "username" : "MyUser3",
    "password" : "MyPassword3"
},
]

# Ermitteln der aktuellen IP Adresse des Gerätes
current_ip = urllib.request.urlopen('https://api.ipify.org').read().decode('utf8')

# Die Funktion zur Setzung der neuen IP Adresse wird deklariert
def set_new_ip(domain):
  # Der http Authentifizierer wird deklariert
  password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
  # Die URL zum DNS Server wird in eine Variable gespeichert
  top_level_url = "https://dyndns.kasserver.com/?myip=" + current_ip
  # Das Passwort der Domain wird dem http Authentifizierer übergeben und mit dem DNS Server verknüpft
  password_mgr.add_password(None, top_level_url, domain['username'], domain['password'])
  # Der URL Öffner wird definiert
  opener = urllib.request.build_opener(urllib.request.HTTPBasicAuthHandler(password_mgr))
  # Die URL wird aufgerufen
  opener.open(top_level_url)

# Die oben deklarierten Domains werden einzeln durchgegangen
for domain in domains:
  try:
    # Die IP Adresse der Domain wird ermittelt
    domain_ip = socket.gethostbyname(domain['domain'])

    # Es wird geschaut, ob die IP Adresse der Domain von der IP Adresse des Gerätes abweicht.
    if current_ip != domain_ip:
      print( domain['domain'] + " hat eine andere IP(" + domain_ip + ")! Deine IP ist: " + current_ip + " Ändere!" )
      # Falls die IP Adresse abweicht, wird die Funktion zur Setzung der neuen IP Adresse aufgerufen
      set_new_ip(domain)

  except Exception as e:
    # Falls die IP Adresse der Domain nicht ermittel werden konnte, wird ebenfalls die Funktion zur Setzung der neuen IP Adresse aufgerufen
    set_new_ip(domain)

Die Variable, wo die Domains und, die Benutzernamen und die Passwörter gespeichert sind, könnt ihr anpassen und euren Anbieter hinzufügen.

Wie ihr Zugangsdaten zu einem kostenlosen DynDNS Anbieter erstellen und diesen verwenden könnt, wird in diesem Beitrag beschrieben.

Script auf den Raspberry Pi hochladen und ausführen

Speichert diesen Script unter den Namen dyndns.py. Um es hochzuladen, öffnet ihr MobaXterm und verbindet euch mit eurem Raspberry Pi.

Rot: Seitenleiste anzeigen/ausblenden
Blau: Ordner erstellen
Grün: Ordner Inhalt

Ihr müsstet das das sehen, was oben im Screenshot angezeigt wird. Falls die Sidebar nicht angezeigt wird, klickt ihr auf SFTP auf der Linken Seite (im Screenshot rot markiert) und dann wird die Sidebar angezeigt.

Anschließend erstellt ihr einen Ordner und benennt diesen Mit Cron. Einen Ordner könnt ihr mit einem Klick auf den Button (Blau markiert) erstellen.

Nachdem ihr einen Ordner erstellt habt, öffnet ihr den Ordner mit einem Doppelklick und zieht eure Datei dort rein. Die Datei wird hochgeladen. Um die Datei zu testen, gebt in die Kommandozeile folgendes ein:

cd Cron && python3 dyndns.py

Dadurch führt ihr diesen Python Script aus und falls keine Fehlermeldung auftaucht, habt ihr alles richtig gemacht. Herzlichen Glückwunsch!

In den späteren Tutorials werde ich darauf eingehen, wie ihr diesen und andere Scripts auf euren Raspberry Pi, automatisch mit bestimmten Zeitabständen aufrufen könnt. Das wird in diesem Fall dazu dienen, dass die IP-Adresse des Raspberry Pi’s immer über eure Domain erreichbar sein wird.

Themen

Cloud DIY DNS DynDNS Python Raspberry Pi

Beitrag teilen

WhatsAppen

Folgen Sie uns