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.
1 2 3 4 5 6 7 8 | 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 "https://dyndns.strato.com/nic/update?hostname=$DomainName" -Headers $headers | Out-File "$PSScriptRoot\REPORT_$DomainName.txt" } |
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:
1 2 | Update-StratoDDNS -DomainName "domain1.com" -Password "mysecretpassword1" Update-StratoDDNS -DomainName "domain2.net" -Password "mysecretpassword2" |
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.
Hey Damian, danke fürs verlinken und cool, dass mein altes Script dir geholfen hat
du kannst Powershell offensichtlich besser als ich ?
Ob ich es besser kann, sei jetzt mal dahin gestellt
Wichtig ist, dass man nie aufhört dazu zu lernen!