Wer bei Strato ein oder mehrere Domains sein eigen nennen darf und die Strato DynDNS-Funktion nutzt, kann mit einem simplen PowerShell-Script die IP-Adresse automatisiert aktualisieren.
Diese PowerShell-Funktion nimmt zwei Argumente entgegen: „$DomainName“ beschreibt die Domain, dessen DNS-Eintrag mit der aktuellen IP-Adresse aktualisiert werden soll. „$Password“ ist das bei Strato hinterlegte Passwort, das für die Änderung der DNS-Einträge nötig ist. Dieses Passwort kann im Strato-Benutzerkonto festgelegt/geändert werden.
DomainName und Password werden zu einem String zusammengefügt, in bytes encodiert und anschließend nochmals mit Base64 encodiert. Das Ergebnis daraus wird dann in einen HTTP-Header gepackt und an die dyndns-URL gesendet. Die HTTP-Response wird dann anschließend in einer Text-Datei gespeichert, als eine Art Protokoll.
Ein DynDNS-Update kann dann mit einem Einzeiler pro Domain durchgführt werden:
Je nach Anwendungsfall kann man dieses PowerShell-Script dann zum Beispiel in den Windows Task Scheduler packen. Ich habe einen scheduled Task beispielsweise so eingerichtet, das alle 15 Minuten ein DynDNS-Update durchgeführt wird. Somit sind meine Domains quasi immer aktuell.
Die Idee zu diesem Script stammt übrigens von Tobias Wust! Den Original-Artikel findet ihr hier: https://wust.me/strato-dyndns-mit-powershell/. Ich habe mir erlaubt, dass Script in eine function zu verpacken und mit Parametern zu versehen.
Code:
function Update-StratoDDNS([string]$DomainName, [string]$Password){ $pair = "${DomainName}:${Password}" $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) $base64 = [System.Convert]::ToBase64String($bytes) $basicAuthValue = "Basic $base64" $headers = @{ Authorization = $basicAuthValue } Invoke-WebRequest -uri "[URL]https://dyndns.strato.com/nic/update?hostname=[/URL]$DomainName" -Headers $headers | Out-File "$PSScriptRoot\REPORT_$DomainName.txt" }
DomainName und Password werden zu einem String zusammengefügt, in bytes encodiert und anschließend nochmals mit Base64 encodiert. Das Ergebnis daraus wird dann in einen HTTP-Header gepackt und an die dyndns-URL gesendet. Die HTTP-Response wird dann anschließend in einer Text-Datei gespeichert, als eine Art Protokoll.
Ein DynDNS-Update kann dann mit einem Einzeiler pro Domain durchgführt werden:
Code:
Update-StratoDDNS -DomainName "domain1.com" -Password "mysecretpassword1" Update-StratoDDNS -DomainName "domain2.net" -Password "mysecretpassword2"
Die Idee zu diesem Script stammt übrigens von Tobias Wust! Den Original-Artikel findet ihr hier: https://wust.me/strato-dyndns-mit-powershell/. Ich habe mir erlaubt, dass Script in eine function zu verpacken und mit Parametern zu versehen.