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
- Spotify
- Netflix
- 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.
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.

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.