Powershell: FritzBox über TR-064 im Netzwerk konfigurieren und auslesen

Mitglied: colinardo
article-picture

back-to-topDownload des Powershell-Moduls: fritzbox_tr064_303474.zip



Ich stand neulich vor der Aufgabe eine Fritzbox per Powershell auszulesen und Aktionen darüber automatisiert auszuführen. Herausgekommen ist ein Powershell-Modul das bestimmt dem ein oder anderen nützlich sein könnte.

Ich hatte dazu zwar schon einen Artikel für die Bash geschrieben, jedoch hat dieser das ganze Prozedere über das Webinterface realisiert was jedoch durch die ständigen Anpassungen seitens AVM nicht für dauerhafte Skripte geeignet und auch nicht sehr zuverlässig ist wenn zukünftige Updates auf der FritzBox gefahren werden.

Also habe ich das ganze nun mal mit der standardisierte Schnittstelle TR-064 umgesetzt welche die Fritzbox unterstützt. Die Abfragen laufen dort über standardisierte SOAP-Requests auf die uPnP Schnittstelle der Box (Port 49000/49443) ab. Damit diese Abfrage funktionieren, muss folgende Einstellung in der Fritzbox aktiviert sein:

Heimnetz > Heimnetzübersicht > Netzwerkeinstellungen > Zugriff für Anwendungen zulassen

screenshot

Das Modul stellt im aktuellen Zustand noch nicht alle verfügbaren Funktionen zur Verfügung, jedoch einen breiten Satz über alle Möglichkeiten. Bei Bedarf können natürlich mit Studium der entsprechenden AVM-Dokumentation und der SOAP-XML-Beschreibungsdatei Funktionen leicht selbst nachgerüstet werden. Dazu schreibe ich später noch mehr.

Das Modul wurde mit einer FritzBox 7590 mit Firmware > 7.0 an einem DSL-Anschluss getestet (siehe Changelog weiter unten), sollte aber in der Regel auch mit älteren/neueren Firmware-Revisionen funktionieren sofern AVM keine grundlegenden Änderungen am TR-064 Protokoll oder den Parametern vornimmt.

back-to-topWichtige Informationen:


Wenn man mit dem Modul bestimmten Einstellungen des Routers verändern oder abrufen möchte, muss zwingend die 2-Faktor-Bestätigung (System > Fritz!Box-Benutzer > Zusätzliche Bestätigung) deaktiviert werden, da ansonsten die jeweilige Methode mit der Meldung "Ungültge Parameter (402)" fehl schlägt!

screenshot

Das Modul funktioniert nur im internen Netz der Fritzbox, also nicht über den WAN-Port!

back-to-topMomentan enthaltene Funktionen


back-to-topBasis-Informationen

  • Get-FBInfo : Basisinformationen und letzte Logeinträge abrufen
  • Get-FBWANDSLInterfaceConfig : DSL Leitungsdaten abfragen
  • Get-FBWANDSLInterfaceStatistics : DSL Leitungsstatistik abfragen

back-to-topVerbindungen

  • Invoke-FBReboot : Fritzbox neu starten
  • Invoke-FBDSLDisconnect : DSL-Verbindung trennen

back-to-topPortfreigaben

  • Get-FBPortMappings : Portfreigaben auslesen
  • Add-FBPortMapping : Portfreigabe erstellen.
  • Remove-FBPortMapping : Portfreigaben löschen. Achtung: Aktuell in Firmware Versionen 7.27/7.28 wegen Bug in der AVM-Firmware nicht funktionsfähig

back-to-topTelefonie-Funktion

  • Get-FBCallList : Ruft die Anruferliste ab.
  • Invoke-FBDialNumber : Eine Rufnummer mit Hilfe der Wählhilfe anwählen
  • Set-FBDialHelperFunction : Aktiviert oder Deaktiviert die Wählhilfe für ein bestimmtes Endgerät
  • Disconnect-FBCall : Anruf über die Wählhilfe vorzeitig beenden
  • Add-FBPhonebookEntry : Kontakt zum Telefonbuch hinzufügen
  • Update-FBPhonebook : Online Telefonbücher aktualisieren
  • Get-FBPhoneBookEntries : Kontakte eines Telefonbuchs auslesen
  • Update-FBPhoneBookEntry : Kontakte eines Telefonbuchs ändern
  • Get-FBCallDeflections : Alle Rufumleitungen auflisten
  • Get-FBCallDeflection : bestimmte Rufumleitung anhand Ihrer ID abfragen
  • Switch-FBCallDeflection : De-/aktivieren einer Rufumleitung
  • Get-FBTAMList : Anrufbeantworter auflisten
  • Get-FBTAMInfo : Details eines Anrufbeantworters anzeigen
  • Enable-FBTAM : Anrufbeantworter einschalten
  • Disable-FBTAM : Anrufbeantworter ausschalten
  • Get-FBTAMMessageList : Anzeigen von Nachrichten eines Anrufbeantworters
  • Set-FBTAMMarkMessage : Nachrichten eines Anrufbeantworters als gelesen/ungelesen markieren
  • Remove-FBTAMMessage : Löschen von Nachrichten eines Anrufbeantworters

back-to-topNetzwerk

  • Get-FBHostList : Liste der Hosts im Netzwerk abfragen
  • Get-FBStaticRoutes : Auflisten der statischen Routen
  • Get-FBStaticRoute : Abfragen bestimmter statischer Routen
  • Enable-FBStaticRoute : Statische Route aktivieren
  • Disable-FBStaticRoute : Statische Route deaktivieren
  • Add-FBStaticRoute : Statische Route hinzufügen
  • Remove-FBStaticRoute : Statische Route entfernen

back-to-topWifi

  • Switch-FBWifiInterface : Bestimmtes Wifi-Interface ein-/ausschalten
  • Get-FBWifiInterfaceInfo : Informationen über Wifi-Interfaces ausgeben
  • Switch-FBWifi : Wifi global ein- oder ausschalten (so wie wenn man den Wifi-Button am Gerät betätigt)
  • Get-FBWifiWPSInfo : WPS Status abfragen
  • Set-FBWifiWPSConfig : WPS starten/stoppen (PushButton/Stop running WPS Session/WPS deaktivieren)
  • Set-FBWifiWPSStatus : WPS de-/aktivieren
  • Get-FBWifiNightControl : Wifi Nachtschaltfunktion auslesen
  • Get-FBWifiConnectedDevicesAsXML : Informationen über alle Verbundenen Wifi-Clients als XML Objekt ausgeben
  • Set-FBWifiInterfaceChannel : WLAN Kanal für ein Wifi-Interface festlegen
  • Get-FBWifiPresharedKey : PSK für Wifi-Interface auslesen
  • Set-FBWifiPresharedKey : PSK für Wifi-Interface setzen

back-to-topSpeicherfunktionen SMB/FTP

  • Get-FBStorageConfig : Status der SMB/FTP Funktionen ausgeben
  • Enable-FBFTPServer : FTP-Server für LAN/WAN aktivieren
  • Disable-FBFTPServer : FTP-Server für LAN/WAN deaktivieren
  • Enable-FBSmbServer : SMB-Server aktivieren
  • Disable-FBSmbServer : SMB-Server deaktivieren
  • Set-FBftpuserConfig : Konfiguration des speziellen 'ftpuser' Kontos modifizieren
  • Get-FBOnlineStorage : Online-Speicher Konfiguration anzeigen (TR-064 Funktion zum Ändern dieser zur Zeit leider nicht funktionsfähig(Firmware-Bug?)

back-to-topKindersicherung (WAN-Zugangsfilter)

  • Get-FBWANAccessByIP : WAN Zugangsstatus für IP abfragen
  • Enable-FBWANAccessByIP : WAN Zugang erlauben
  • Disable-FBWANAccessByIP : WAN Zugang sperren
  • Set-FBDiscardAllTickets : Ein neues Set an Zugangstickets generieren
  • Get-FBTicketIDStatus : Status eines Tickets abfragen
  • Set-FBMarkTicket : Ticket als ungültig markieren

back-to-topRemote-Zugriff / Dynamic-DNS (DDNS)

  • Get-FBRemoteAccessUsers : Liste mit Usern ausgeben die für den Remote-Zugriff aktiviert wurden
  • Enable-FBRemoteAccess : Remote-Zugriff per HTTPS aktivieren
  • Disable-FBRemoteAccess : Remote-Zugriff per HTTPS deaktivieren
  • Get-FBDDNSInfo : Konfigurationsoptionen für DDNS Dienst anzeigen
  • Get-FBDDNSProviders : Unterstützte Dynamic-DNS Provider anzeigen
  • Set-FBDDNSConfig : Dynamic-DNS Konfigurations-Optionen und Dienst an- oder abschalten

back-to-topErläuterungen zur praktischen Nutzung


back-to-topEinbinden des Moduls


Um das Modul in einer beliebigen Powershell-Session zu nutzen, muss dieses als erstes importiert werden. Das geschieht mit folgendem Befehl:


Alternativ kann man das Modul natürlich wie gehabt auch in die systemweit nutzbaren Modulverzeichnisse kopieren, dann erübrigt sie das manuelle Importieren über Import-Module.
Die Verzeichnisse in denen man das Modul platzieren kann sind über die Globale Variable $env:PSModulePath abrufbar. Der Inhalt des Moduls muss dann nur in einen der aufgeführten Ordner kopiert werden.

Die Informationen zur Nutzung des Moduls sind auch in der Zip-Datei des Moduls in der Datei readme.txt enthalten.

back-to-topErster Aufruf vor der Nutzung der spezifischen Funktionen


Bevor eine der bereitgestellten CMDLets des Moduls genutzt werden kann muss das CMDLet Connect-Fritzbox mit Hostname bzw. FQDN, Benutzername und Passwort als Parametern aufgerufen werden. Dieses initialisiert die Variablen für die folgenden Aufrufe der anderen CMDLets. Wird dies nicht getan werfen die CMDLets aber auch einen Hinweise darauf.

Der Aufruf sieht bspw. so aus


Danach lassen sich die nachfolgend aufgeführten CMDLets aufrufen. Diese nutzen dann für die Verbindung alle diese angegebenen Zugangsdaten.

Möchte man sich einen Überblick verschaffen welche CMDLets das Modul bietet führt man dazu folgendes nach dem Import des Moduls aus

Zu jeder Funktion sind Beispiele und Informationen zur Nutzung in der Synopsis oberhalb jeder Funktion hinterlegt. Diese lassen sich entweder direkt im Modul-Code nachlesen oder man nutzt die Powershell-Eigenen Hilfsfunktionen.

Beispiel um die Hilfe für das CMDLet Connect-Fritzbox anzuzeigen

back-to-topDokumentation zur TR-064 Schnittstelle

Die Dokumentation zu der TR-064 Schnittstelle und die Dienstbeschreibungen mit den nötigen Parametern findet sich hier:
http://avm.de/service/schnittstellen/
Die XML-Datei welche die SOAP-Servicebeschreibungen der eigenen Fritzbox auflistet kann man auf seiner eigenen Fritzbox unter http://fritz.box:49000/tr64desc.xml abrufen.

Dort finden sich dann Abschnitte mit dem XML-Tag Service.
Beispiel:
Der ServiceType ist eine eindeutige Bezeichnung für den Abschnitt den man konfigurieren oder abfragen möchte. Welche Abschnitte es gibt und welche Aktionen es darin gibt lässt sich der oben verlinkten Dokumentation bei AVM entnehmen. Hat man den gewünschten Dienst gefunden findet man auf der selben Ebene der XML-Datei eine Sub-URL die unter SCPDURL steht. Diese kann man ebenfalls von der Fritzbox abrufen: http://fritz.box:49000/deviceconfigSCPD.xml , also immer die URL an http://fritz.box:49000 angehängt.
Ruft man diese XML-Datei ab, findet man darin die Aktionen die man für diese Kategorie ausführen kann.

Beispiel hier die Aktion zum Zurücksetzen auf die Werkseinstellungen:
Dieser Aktionsname landet dann bei der internen Funktionen New-Request immer im Parameter -action wenn man sich mal eine der CMDLets im Skript anschaut. Zusätzlich muss der Inhalt des Tags serviceType (also das urn:dslforum-org:......) beim Aufruf der New-Request Funktion im Parameter -urn angegeben werden.
Je nachdem welche und ob die Funktion Übergabe-Parameter erwartet, steht ebenfalls in den PDF-Dokumentationen zu den jeweiligen Funktionen bei AVM. Muss man Parameter im SOAP-Request mit übergeben sind diese mit [IN] gekennzeichnet. Parameter die mit [OUT] gekennzeichnet sind werden bei der Antwort ausgegeben, diese muss man der Funktion also nicht übergeben.

Mit diesen Informationen ist also nicht sehr schwierig auch andere Funktionen der Fritzbox anzusprechen oder entsprechende Infos abzurufen.


Solltet Ihr Interesse an weiteren spezifischen Funktionen haben kann ich Zug um Zug weitere Funktionen nachreichen und in das Modul einbauen wenn Ihr mir dies mit einer Bitte in die Kommentare schreibt. Ich werde diese dann Zeitnah nachreichen.

Hoffe das hilft dem ein oder anderen bei seinem Projekt.

Wie immer sind alle Angaben ohne Gewähr und die Benutzung geschieht auf eigene Gefahr.

Gruß @colinardo

back-to-topChangelog:

back-to-topVersion 1.0.4 (09.11.2021)
  • + 6 Funktionen für Remote-Zugriff/Dynamic-DNS hinzugefügt
  • Fix: Ausgaben der Portmapping-Funktionen optimiert.
back-to-topVersion 1.0.3 (08.11.2021)
  • + 6 Funktionen zur Kindersicherung und WAN Zugangsfilter hinzugefügt
back-to-topVersion 1.0.2 (06.11.2021)
  • + 7 Funktionen zum Verwalten von SMB/FTP Server und Online-Speicher hinzugefügt
  • + 7 Funktionen zum Verwalten der Anrufbeantworter und deren Nachrichten hinzugefügt
  • + 6 Funktionen zum Verwalten der statischen Routen hinzugefügt
  • + Kompatibilität mit Fritz!OS 7.29 überprüft
back-to-topVersion 1.0.1 (05.11.2021)
  • + Funktion zum Abfragen der Hosts im Netzwerk hinzugefügt
  • Fix: 03.11.2021 : Die Portmapping-Funktionen korrigiert damit diese auch andere WAN-Typen unterstützt
back-to-topVersion 1.0.0 (14.10.2021)
  • + Umwandlung des Skripts in ein echtes Powershell-Modul zur einfacheren Nutzung
back-to-topÄnderungen vor dem Upgrade zur Modulversion:
02.08.2021 : 3 Funktionen zum Auslesen von Rufumleitungen hinzugefügt
30.07.2021 : Kompatibilität mit Fritz!OS 7.28 überprüft
18.07.2021 : Einige Funktionen zum Steuern und Konfigurieren der WLAN-Interfaces der Fritzbox hinzugefügt
18.07.2021 : Funktion Add-FBPhoneBookEntry erweitert so dass mehrere Nummern eines Typs hinzugefügt werden können
18.07.2021 : Funktion Update-FBPhoneBookEntry zum Ändern der Kontakte eines Telefonbuchs hinzugefügt
18.07.2021 : Funktion Get-FBPhoneBookEntries zum Abfragen der Kontakte eines Telefonbuchs hinzugefügt
05.09.2020 : Funktion Update-FBPhonebook zum Aktualisieren der Online-Telefonbücher hinzugefügt
12.05.2020 : Funktion Add-FBPhoneBookEntry zum Hinzufügen eines neuen Kontaktes zum Telefonbuch hinzugefügt
04.04.2020 : Funktion Disconnect-FBCall hinzugefügt
10.03.2020 : Funktion Set-FBDialHelperFunction zur Aktivierung und Deaktivierung der Wählhilfe hinzugefügt
10.03.2020 : Zusätzlichen Parameter -phone zur Funktion Invoke-FBDialNumber hinzugefügt der es erlaubt das zu aktivierende Telefon für die Wählhilfe festzulegen
17.06.2019 : Erlaubte TLS-Protokollversionen für die Powershell-Session hinzugefügt (Behebt den Fehler: Die zugrunde liegende Verbindung wurde geschlossen: Unerwarteter Fehler beim Senden..)
20.11.2018 : Korrektur einer Variablen in der Funktion Get-FBPortMappings
30.01.2018 : Script optimiert umgeschrieben
20.02.2017 : Funktion Invoke-FBDialNumber hinzugefügt

Content-Key: 303474

Url: https://administrator.de/contentid/303474

Ausgedruckt am: 30.11.2021 um 13:11 Uhr

Mitglied: aliate
aliate 25.05.2017 um 21:49:15 Uhr
Goto Top
Gibt es eine Möglichkeit die WLAN-Sendeleistung über einen TR064-Befehl einzustellen?
Mitglied: colinardo
colinardo 26.05.2017 aktualisiert um 09:00:25 Uhr
Goto Top
Servus @aliate .
Zitat von @aliate:

Gibt es eine Möglichkeit die WLAN-Sendeleistung über einen TR064-Befehl einzustellen?
Nein. Dazu benötigst du Shellzugriff auf deine Box (bedeutet freetzen oder über Config Hacks ssh/telnet aktivieren)

Grüße Uwe
Mitglied: TaurecTaurec
TaurecTaurec 10.06.2017 um 19:30:33 Uhr
Goto Top
Hallo colinardo,
vielen dank für Deine Arbeit,
da ich mich mit Powershell nicht auskenne bekomme ich es auch leider nicht hin z.B. die FB info anzeigen zu lassen.
Wie oder was muss ich tun um die Infos anzuzeigen?

cu
Taurec
Mitglied: colinardo
colinardo 10.06.2017, aktualisiert am 14.10.2021 um 15:27:46 Uhr
Goto Top
Zitat von @TaurecTaurec:
Hallo colinardo,
vielen dank für Deine Arbeit,
Servus @TaurecTaurec , willkommen auf Administrator.de!
da ich mich mit Powershell nicht auskenne bekomme ich es auch leider nicht hin z.B. die FB info anzeigen zu lassen.
Wie oder was muss ich tun um die Infos anzuzeigen?
Du nimmst obigen Code, fügst diesen in eine Datei mit der Endung .ps1 ein. Dann fügst du unten in der Datei noch ein Get-FBInfo ein um die Funktion aufzurufen, passt ganz oben im Skript wie in der Anleitung beschrieben die Zugangsdaten deiner Fritzbox an und speicherst die Datei.
Dann führst du das Skript folgendermaßen z.B. in einer CMD aus:

Informationen zur praktischen Nutzung des Moduls stehen im Beitrag oben.

Sollten noch Fragen offen sein, bitte PM. Merci.
Grüße Uwe

back-to-topHier noch ein wenig Background-Wissen zum Ausführen von Powershell-Skripten:

back-to-topAnleitung: Wie starte ich Powershell-Scripte
  • Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eineadministrative Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
  • Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
back-to-topStarten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
back-to-topStarten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
Wenn man dem Script Parameter übergeben möchte:
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
Man kann auch mehrere Scripte hintereinander ausführen lassen:
Weitere Parameter zeigt einem ein powershell -? in einer Konsole an.
back-to-topStarten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Mitglied: TaurecTaurec
TaurecTaurec 10.06.2017 um 20:08:14 Uhr
Goto Top
Hallo Uwe,
vielen Dank für die Hilfe. (auch für die Infos)

Alles funktioniert für mich wie Du beschrieben hast
(für mich sind nur die get Funktionen interessant)

cu Taurec

P.S. wirklich gut gemacht :-) face-smile
Mitglied: colinardo
colinardo 10.06.2017 aktualisiert um 21:59:56 Uhr
Goto Top
Freut mich.

Schönes Wochenende noch.
Uwe

Mitglied: Selfer
Selfer 11.08.2017 um 17:56:59 Uhr
Goto Top
Hallo Uwe,
auch ich kenne mich mit Powershell nicht aus, aber dank Deiner ausführlichen Darstellungen läuft Dein Script. Leider hat es keine Funktion, die eine Abfrage an die FB erlaubt, ob ein USB-Gerät (nicht über Fernanschluss) angeschlossen ist bzw. bereits ist. Ist sowas überhaupt machbar? Wenn ja, kann man die Infos in eine Datei schreiben lassen?
Mitglied: colinardo
colinardo 11.08.2017 aktualisiert um 19:48:07 Uhr
Goto Top
Servus Selfer, willkommen auf Administrator.de!
Freut mich zu hören das dir mein Skript bisher gute Dienste erwiesen hat :-) face-smile.
Zitat von @Selfer:
Leider hat es keine Funktion, die eine Abfrage an die FB erlaubt, ob ein USB-Gerät (nicht über Fernanschluss) angeschlossen ist bzw. bereits ist. Ist sowas überhaupt machbar?
Leider finde ich hierzu keine entsprechende Kategorie in den Klassen welche die Infos zu den angeschlossenen USB-Geräten kund tun würde.
Du könntest es aber immer noch alternativ über das Webinterface auslesen, s. Skript unten.
Wenn ja, kann man die Infos in eine Datei schreiben lassen?

Alternative über Auslesen des Webinterface (nur mit FW. 6.83 einer FB 7390 getestet, andere FW anderer HTML-Code!)
Das gibt den Inhalt der Tabelle wieder in der evt. angeschlossene Geräte erscheinen.

Hoffe ich konnte dir damit trotzdem weiterhelfen.

Grüße Uwe
Mitglied: Selfer
Selfer 12.08.2017 um 09:52:44 Uhr
Goto Top
Vielen Dank für Deine Mühen, leider funktioniert das Script nicht (löst einen Haufen Fehler aus:

powershell.exe : Invoke-WebRequest : FRITZ!BoxDie angegebene URL wurde nicht gefunden. Sie
In Zeile:1 Zeichen:1

back-to-toppowershell.exe -ExecutionPolicy Bypass -File C:\Users\Hubert\Desktop\nw-abfrage. ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : NotSpecified: (Invoke-WebReque... gefunden. Sie :String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

werden auf die Startseite der FRITZ!Box weitergeleitet.Falls Sie nicht
automatisch auf die Startseite der FRITZ!Box weitergeleitet werden, klicken
Sie hier.
In C:\Users\Hubert\Desktop\nw-abfrage.ps1:25 Zeichen:10

back-to-top$r = Invoke-WebRequest -Uri $url -Body $body -Method Get

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:Htt
pWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
ll.Commands.InvokeWebRequestCommand
Fehler beim Aufrufen der Methode, da [System.__ComObject] keine Methode mit
dem Namen "IHTMLDocument2_write" enth„lt.
In C:\Users\Hubert\Desktop\nw-abfrage.ps1:35 Zeichen:1

back-to-top$dom.IHTMLDocument2_write($table)

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (IHTMLDocument2_write:String)
[], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

irm : Ungltiger URI: Der Hostname konnte nicht analysiert werden.
In C:\Users\Hubert\Desktop\nw-abfrage.ps1:11 Zeichen:12

back-to-top$xml = irm -Uri "$url/login_sid.lua" -SessionVariable sess -ContentType

"app ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~
+ CategoryInfo : NotSpecified: (:) face-smile [Invoke-RestMethod], UriFormat
Exception
+ FullyQualifiedErrorId : System.UriFormatException,Microsoft.PowerShell.C
ommands.InvokeRestMethodCommand

.... wobei ich als URL der FB die IP angegeben habe, weil auch in Firefox der Name nicht mehr aufgelöst wird seit Neuem. Dies klappt auch im ersten Script. Ich nutze die FB 7270 V2 (UI) mit der FW 54.06.06. Ich nehme an es liegt daran, wie Du auch angedeutet hast. Wo muss ich suchen, um den richtigen Code für meine Box zu finden.
Grüße
Selfer
Mitglied: colinardo
colinardo 12.08.2017 aktualisiert um 10:18:22 Uhr
Goto Top
Ich nutze die FB 7270 V2 (UI) mit der FW 54.06.06. Ich nehme an es liegt daran, wie Du auch angedeutet hast.
So ist es! Die Firmware ist viel zu alt. Bei den neuen Firmwares ab 6.50 hat sich zu viel geändert, als das der obige Code bei dir noch funktionieren könnte (WebIF und URLs komplett anders!).
Wo muss ich suchen, um den richtigen Code für meine Box zu finden.
Zum Auslesen der älteren Firmwares findest du hier im Forum von mir noch Quelltext für Bash-Skripte.
https://www.administrator.de/wissen/informationen-webinterface-fritzbox- ...
Bitte habe Verständnis das ich für die out of date Firmwares hier keinen kostenlosen Support bieten kann.
Mitglied: Selfer
Selfer 12.08.2017 um 16:55:20 Uhr
Goto Top
Klar, ist verständlich. Trotzdem vielen Dank.
Mitglied: Lochkartenstanzer
Lochkartenstanzer 12.08.2017 um 17:08:57 Uhr
Goto Top
Zitat von @colinardo:

Bitte habe Verständnis das ich für die out of date Firmwares hier keinen kostenlosen Support bieten kann.

Selbst für aktuelle Firmwares kostenlosen Support zu erwarten ist etwas gewagt. :-) face-smile

lks
Mitglied: voumi70
voumi70 24.08.2017 um 03:44:39 Uhr
Goto Top
Hallo colinardo
Seit längerer Zeit bin ich auf der Suche nach einer Möglichkeit, mit einem Script auf einem Windows-Rechner einen Telefonbeantworter auf der FritzBox beeinflussen zu können. Scripte im Zusammenhang mit der FritzBox habe ich schon einige gefunden. Bislang scheiterte es daran, dass ich nicht herausgefunden habe, was ich mit diesen wo anstellten sollte.....
Mit Deinem Script und den Tipps konnte ich zumindest bereits eine Reaktion erreichen. ;-) face-wink
Weisst Du, was ich an Deinem Script anpassen müsste, um die Delay-Zeit des Beantworters 1 beeinflussen zu können? Ich möchte zwischen 0 und 35 Sekunden wechseln können.
Besten Dank für Deinen Ratschlag schon im Voraus und liebe Grüsse aus der Schweiz.
voumi70
Mitglied: colinardo
colinardo 24.08.2017 aktualisiert um 13:01:00 Uhr
Goto Top
Gruezi voumi70, willkommen auf Administrator.de!
Über die API lässt es sich hier leider nicht ändern. Aber wie im letzten Beispiel in den Kommentaren geht dies über ein Web-GUI Skript bei dem man den Wert via Post an die /data.lua übermittelt.
Die nötigen Parameter bekommst du ganz leicht wenn du die Seite des Anrufbeantworters aufrufst, dann mit F12 die Browser-Developer Tools aktivierst auf den Netzwerk-Tab wechselst und dann die Einstellung des ABs änderst und auf Speichern klickst. Dann erscheinen die Ajax Posts in den Developer-Tools und dort sieht man welche Parameter für den manuellen Aufruf übermittelt werden müssen.
Da diese je nach Firmware unterschiedlich sind kann ich dir von meiner Seite aus nur Code für eine 7390 mit FW6.83 anbieten. Hast du eine andere Firmware kann ich dir nur anbieten gegen Aufwandsentschädigung deine Firmware zu analysieren und entsprechenden Code bereitzustellen.
Bei Interesse gerne PN.

Viele Grüße
Uwe
Mitglied: existenz2
existenz2 06.01.2018 aktualisiert um 14:59:27 Uhr
Goto Top
Sehr geiler Beitrag, ab neueren OS geht ja telnet so ohne weiteres nicht mehr, brauchte was um WLAN einzuschalten.

Ich habe den Aufruf etwas vereinfacht, so ist es m.E. einfacher mit der XML-Beschreibung von http://fritz.box:49000/tr64desc.xml bzw Unterseiten klarzukommen.

Die urn wird übergeben, die Action und die Argumente der Action als Hashtable.
Unten sind Beispiele für WLAN ein, WLAN aus und GetInfo

Bis die WLAN Befehle im UI sichtbar sind dauert es immer etwas (max 20 Sekunden).
Habe es mit der 7412 getestet.
Kann sein, dass es nicht mit allen Actions geht, habe nur die zwei getestet.


Mitglied: Herbert
Herbert 17.01.2018 um 21:17:02 Uhr
Goto Top
Hallo Colinardo,
vielen Dank für das umfangreiche Script und Deine Arbeit.

Ich möchte die Anrufliste aus der Fritzbox auslesen und alle Einträge dabei bekommen
(nicht die üblichen 400).

Obwohl in Deinem Script die erforderlichen Parameter stehen, kommen als Antwort immer
nur die letzten 400 Anrufe.

In der xml-Datei steht der Parameter calls:400. Wenn ich das als zusätzlichen Parameter
einfüge ändert sich nichts.

Weißt Du ob das das hart codiert ist oder wie man das ändern kann?
Danke
Mitglied: Pjordorf
Pjordorf 17.01.2018 um 21:47:48 Uhr
Goto Top
Hallo,

Zitat von @Herbert:
Weißt Du ob das das hart codiert ist oder wie man das ändern kann?
Bau mehr RAM ein und erweiter die Firmware dann kannst du die 1200000 getätigten Anrufe auch im LOG sehen :-) face-smile Oder AVM fragen warum die immer nur von max. 400 Einträge sprechen... :-) face-smile

Gruß,
Peter
Mitglied: colinardo
colinardo 17.01.2018 aktualisiert um 23:44:50 Uhr
Goto Top
Zitat von @Herbert:

Hallo Colinardo,
vielen Dank für das umfangreiche Script und Deine Arbeit.
Servus Herbert, keine Ursache.
Ich möchte die Anrufliste aus der Fritzbox auslesen und alle Einträge dabei bekommen
(nicht die üblichen 400).

Obwohl in Deinem Script die erforderlichen Parameter stehen, kommen als Antwort immer
nur die letzten 400 Anrufe.
Das ist normal, bitte lese dazu
https://avm.de/service/fritzbox/fritzbox-7490/wissensdatenbank/publicati ...

Regelmäßiges Auslesen ist also angesagt oder richtige Telefonanlage besorgen.

Grüße Uwe
Mitglied: CAREOLINE
CAREOLINE 30.01.2018 um 15:50:30 Uhr
Goto Top
Hallo colinardo,
schönes Script. Danke.

Ich würde gerne mit dem Script eine Portweiterleitung einrichten. Leider waren wir bisher nicht erfolgreich.
Ich kann bei der Fritzbox 6490 (Cable) alles auslesen, aber nichts schreiben.
Es kommt immer die FM "Invalid Args"

<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid Args</errorDescription>
</UPnPError>

Was mache ich falsch?

PS:
Um das Script bequem mehrfach hintereinander aus der Powershell ISE ausführen zu können, habe ich die Funktion InitRequest() eingebaut und rufe sie vor jedem Kommando auf.

  1. Request XML vorbereiten
function InitRequest(){
[xml]$script:request = @"
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/;>"
<s:Header>
<h:ClientAuth xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">
<Nonce></Nonce>
<Auth></Auth>
<UserID></UserID>
<Realm></Realm>
</h:ClientAuth>
</s:Header>
<s:Body>
</s:Body>
</s:Envelope>
"@
}

Gruß CAREOLINE
Mitglied: colinardo
colinardo 31.01.2018, aktualisiert am 14.10.2021 um 15:31:27 Uhr
Goto Top
Servus CAREOLINE,
das ist ein Bug der Fritzbox, wenn alle Parameter korrekt angegeben wurden die Portweiterleitung noch nicht existiert und man die Funktion mehrfach (ca. 10-15 mal) hintereinander aufruft akzeptiert sie den Request irgendwann. Auf den Fehler habe ich AVM schon vor einiger Zeit darauf aufmerksam gemacht, da ich hier nur eine 7390 zum Test habe die ja jetzt nicht mehr mit Updates versorgt wird kann ich nicht sagen ob es schon in neueren Firmware-Versionen gefixt wurde. In der 6.8 auf jeden Fall nicht.
Wichtig ist auch das man die Funktion von dem Rechner ausführen muss für den man eine Portweiterleitung einrichten möchte ansonsten verweigert die Box die Anfrage.

Grüße Uwe
Mitglied: Bugger
Bugger 13.09.2018 um 12:42:01 Uhr
Goto Top
Hi,

gibt es das auch als bash script? Oder zumindest die Portfreigabe?
Ich hätte gerne ein Script das ich auf meiner NAS ausführen kann und einen Port öffnet bzw. wieder löscht. Habe leider nur das HIER gefunden aber das ist nur für einen reboot der Box und ich weiß nicht wie die Parameter angepasst werden müssten. Jemand eine Idee?
Mitglied: colinardo
colinardo 13.09.2018 aktualisiert um 12:56:00 Uhr
Goto Top
Zitat von @Bugger:
gibt es das auch als bash script?
Servus,
klar, sind alles simple SOAP Requests die du mit curl absetzen kannst:
https://znil.net/index.php?title=FritzBox_Status_Informationen_per_Upnp_ ...
Die Parameter findest du ja oben in der verlinkten Doku von AVM und in meiner Funktion.
Gibt auch eine PHP Bibliothek die du nutzen kannst.
Mitglied: Bugger
Bugger 13.09.2018 um 13:38:21 Uhr
Goto Top
Hi,

danke. Und die Parameter habe ich gesehen und ich habe mir auch die Doku von AVM angeguckt aber nie ist irgendwo mal ein kompletter Link zur Portfreigabe zu finden. Wie hänge ich denn die einzelnen Parameter an den Link? Ich habe das Script schonmal angepasst, aber irgendwo muss ich ja jetzt die Parameter inzufügen mit tüttelchen und so^^


Mitglied: colinardo
colinardo 13.09.2018, aktualisiert am 04.12.2019 um 12:47:07 Uhr
Goto Top
Für ein Portmapping sieht der zu sendende SOAP-Request als Beispiel so aus:
Die Parameter stehen so auch komplett in der Doku im Abschnitt zu der Funktion AddPortMapping ...
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanip ...
https://avm.de/service/schnittstellen/

Ein testweise abgesetztes
wurde hier auf einer 7590 erfolgreich abgesetzt.

Achtung Die interne IP für die Portweiterleitung muss an der Fritze als Client bereits bekannt sein, sonst gibt sie 'ungültiger Parameter' zurück.

Für die Zukunft nutze besser den https Port der Fritze sonst gehen die Credentials plaintext über die Leitung.
Mitglied: Bugger
Bugger 13.09.2018 aktualisiert um 14:48:01 Uhr
Goto Top
Super danke, allerdings bekomme ich diese Fehlermeldung:


Dachte es liegt an dem von dir beschriebenen Problem mit den Portfreigaben aber die Fehlermeldung ist anders als die weiter oben und es funktioniert auch nach 10-15 mal nicht. Das Standard Script mit dem Reboot funktioniert, also der Zugang funktioniert auf jeden Fall.

Hier das komplette script:


Mitglied: colinardo
colinardo 13.09.2018 aktualisiert um 15:51:03 Uhr
Goto Top
Wunder mich nicht, die Fritte ist hier sehr penibel was Konventionen angeht du nutzt hier erstens Hochkommas statt Anführungszeichen in deinem Plaintextmails übermittelten XML und der SOAPaction header ist auch Casesensitive. Hier kommt es auf jede Kleinigkeit an. Also mach es so wie ich oben und du wirst sehen es geht.
Weitere Fragen bitte nur via PM, das gehört nicht mehr in diesen Thread. MERCI.
Mitglied: Bugger
Bugger 13.09.2018 um 16:25:00 Uhr
Goto Top
Ich poste hier nochmal abschließend, da es keine Frage ist und evtl. für andere interessant ist :-) face-smile :

Habe es gemacht wie du aber bekomme jetzt den 402 Fehler wie oben. Habe eine 7390 und da funktioniert es wohl einfach nicht. Wird Zeit für was neues. ^^

Trotzdem vielen Dank für deine Unterstützung.
Mitglied: colinardo
colinardo 13.09.2018 aktualisiert um 16:58:10 Uhr
Goto Top
Habe eine 7390
Wird es vermutlich sein, habe meinen Testpark an Routern hier erst vor kurzem aktualisiert. Mit der 7390 gab es in dem Zusammenhang tatsächlich vermehrte Probleme die ist jetzt rausgeflogen, mit der neuen Fritte seither nicht mehr gesehen.
By the way, die ganz alten 7390er (SN beginnend mit A) bekommen seit einigen Monaten den Todesstoß an Telekom DSLAMs. Wenn die T-Com klamm heimlich Vectoring auf die DSLAMs prügelt wollen die alten Fritzen nur noch im Fallback-Modus synchronisieren obwohl vorher problemlos 50MBit/s möglich waren, das Modem der 7390 ist ja bekanntermaßen nicht das beste. Nur leider produziert das für viele neuen Elektroschrott, wenn sie die Dinger nicht als Repeater oder AP oder Telefonanlage an einem neuen Modem weiter nutzen, obwohl das Modem eigentlich noch in Ordnung ist.
Mitglied: SamLowry
SamLowry 19.11.2018 um 21:20:15 Uhr
Goto Top
Hi,

kleiner Fehler in Zeile 134.


besser:



Ansonsten funktioniert das Script mit einer 7412 (1&1, FRITZ!OS 06.85) gut, Add-FBPortMapping funktioniert beim ersten Aufruf.

Gruß
Sam
Mitglied: colinardo
colinardo 20.11.2018 aktualisiert um 09:25:02 Uhr
Goto Top
Servus Sam,
vielen Dank für deine Rückmeldung, da hatte ich wohl bei der Umstellung die Variable vergessen. Fehler ist korrigiert. Merci.

Grüße Uwe
Mitglied: Daimonion
Daimonion 22.12.2018 um 20:19:19 Uhr
Goto Top
Moin

Ist ja schön das hier in den Kommentaren immer noch so viel Aktivität ist, und das der Autor noch aktiv antwortet. Danke mal für das grundsätzliche Skript.

Ich wollte mal versuchen das ganze ein wenig für meine Fälle zu erweitern, habe aber ein syntaktisches Problem bei einem AVM spezifischen Value aus dem URN.

Rufe ich die http://fritz.box:49000//hostsSCPD.xml für die URN urn:dslforum-org:service:Hosts:1 ab, so kann ich z.B. die action X_AVM-DE_GetMeshListPath abfragen.

Blöderweise motzt mir das Skript dann rum wenn ich folgenden Request absetzen will:


Schon der Syntax von



wird mir in der IDE nicht korrekt angezeigt und das Skript bringt auch prompt einen Fehler.

In D:\Skripte_Programmierung\FB_Powershellzugriff.ps1:209 Zeichen:37

back-to-topreturn $resp.Envelope.body.X_AVM-DE_GetMeshListPathResponse

back-to-top~~~

Unerwartetes Token "-DE" in Ausdruck oder Anweisung.
In D:\Skripte_Programmierung\FB_Powershellzugriff.ps1:209 Zeichen:40

back-to-topreturn $resp.Envelope.body.X_AVM-DE_GetMeshListPathResponse

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~

Unerwartetes Token "_GetMeshListPathResponse" in Ausdruck oder Anweisung.
+ CategoryInfo : ParserError: (:) face-smile [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken

Syntaktisch ist der Bindestrich wahrscheinlich eher der Powershell zuzurechnen, weswegen auch der Fehler kommt, aber wie könnte ich das beheben? in der Funktion New-Request sehe ich dafür auf die schnelle keine Möglichkeit.

Wäre cool, wenn da jemand einen Tipp dazu hätte.

Grüße
Daimonion
Mitglied: colinardo
colinardo 22.12.2018 aktualisiert um 22:03:56 Uhr
Goto Top
Servus @Daimonion , willkommen auf Administrator.de!
Syntaktisch ist der Bindestrich wahrscheinlich eher der Powershell zuzurechnen, weswegen auch der Fehler
Korrekt.
Ohne die spezielle AVM Funktion jetzt selbst getestet zu haben und nur um die Frage zu beantworten wie man Properties mit Sonderzeichen aufruft, das geht ganz einfach indem du die Property mit Anführungszeichen oder Hochkomma einschließt
Frohes Fest
Grüße Uwe
Mitglied: Daimonion
Daimonion 23.12.2018 um 09:59:42 Uhr
Goto Top
Super, danke dir.

So hat es nun auch geklappt. Jetzt mal schauen was die FB noch alles so Preis gibt.

Frohe Weihnachten
Daimonion
Mitglied: Bugger
Bugger 04.12.2019 um 11:58:19 Uhr
Goto Top
Hi,

hat sich für Linux auch etwas geändert? Ich habe mittlerweile eine 7590 und habe dieses Script:


Aber sowohl bei diesem als auch bei dem oberen bei dem das Script auf eine seperate xml Datei zugreift kommt immer diese Fehlermeldung:

Hast du da eine Idee? Auch den Befehl 10-15 mal auszuführen ändert nichts.
Mitglied: Lochkartenstanzer
Lochkartenstanzer 04.12.2019 aktualisiert um 12:11:10 Uhr
Goto Top
Zitat von @Bugger:

Auch den Befehl 10-15 mal auszuführen ändert nichts.

Du hast vermutlich als Kind auch das eckige ins runde mit Gewalt stecken wollen?
Es erschließt sich mir der Sinn nicht wie das was helfen soll, mit "Gewalt" über ein Dutzend mal zu probieren, wenn die Fehlermeldung sich nicht ändert.

Wenn man nach upnp error 402 fritzbox googelt, bekommt man z.B. das und andere, die einem der Lösung näherbringen könnten.

lks
Mitglied: colinardo
colinardo 04.12.2019 aktualisiert um 13:30:20 Uhr
Goto Top
Hallo Bugger,
Die Box nimmt einem übel wenn die Reihenfolge der XML-Tags für das Port-Mapping nicht genau dem in der Doku entspricht. Finde ich nomalerweise überflüssig da auf die XML-Tags ja normalerweise objektorientiert z.B. via XPath zugegriffen wird und da spielt die Reihenfolge ja keinerlei Rolle, aber so what wenn AVM das so will, habe die Reihenfolge der Tags oben im XML-File korrigiert. Im Powershell-Skript hatte ich das schon vor einiger Zeit angepasst.

Die Reihenfolge muss zwingend so eingehalten werden:

Zusätzlich ist folgender Hinweis aus dem PDF von AVM zu beachten:
Außerdem muss der Host schon in der Liste der Freigaben eingetragen sein, sonst schlägt ein Hinzufügen ebenfalls fehl (Hatte ich oben schon angemerkt).

Wenn du das alles so beachtest dann funktioniert das auf einer aktuellen 7590 (FW 7.12) einwandfrei (getestet).

Grüße Uwe
Mitglied: Bugger
Bugger 04.12.2019 um 15:56:48 Uhr
Goto Top
Hallo Uwe,

ich habe nochmal alles kontrolliert und mit Powershell getestet. Damit hat es zuerst auch nicht funktioniert. Allerdings ist die Box jetzt auch über den WAN Anschluss angeschlossen und nicht wie vorher über Port1. Mit WANIP hat es dann mit deinem Script funktioniert.

Unter Linux zuerst leider immer noch nicht bis ich es ein paar mal öfter ausgeführt habe und siehe da, manchmal muss das eckige in das runde halt mit Gewalt gesteckt werden. :-) face-smile

Was mir beim testen aufgefallen ist: Wenn man die Portfreigabe über das Script hinzufügt und über die Weboberfläche entfernt muss man das Script beim nächsten Test immer ein weiteres mal als zuvor ausführen. Sehr kurioses Verhalten wie ich finde.^^ Nach einem Box neustart und dem hinzufügen sowie löschen über das script funktioniert aber alles beim ersten mal.

Also vielen Dank für die Hilfe :-) face-smile
Mitglied: Dieterlem
Dieterlem 09.03.2020 um 22:44:03 Uhr
Goto Top
Hallo,

ich möchte die Dial-FBNumber nutzen. Gibt es eine Möglichkeit per Befehl ein Telefon auszuwählen, von welchem die gewünschte Rufnummer gewählt wird?
Ich programmiere gerade eine Datenbank aus der ich heraus Rufnummern wählen möchte. Da aber jeder User sein eigenes Telefon hat, würde ich gerne per Befehl festlegen von welchem Telefon angerufen wird. Oder ist es möglich das rufende Telefon innerhalb des Scriptes festzulegen? Man könnte dann für jeden User ein eigenes Script ablegen.

Vielen Dank schon einmal im voraus.


Gruß
Dieterlem
Mitglied: colinardo
colinardo 10.03.2020, aktualisiert am 14.10.2021 um 15:52:10 Uhr
Goto Top
Zitat von @Dieterlem:

Hallo,

ich möchte die Dial-FBNumber nutzen. Gibt es eine Möglichkeit per Befehl ein Telefon auszuwählen, von welchem die gewünschte Rufnummer gewählt wird?
Ich programmiere gerade eine Datenbank aus der ich heraus Rufnummern wählen möchte. Da aber jeder User sein eigenes Telefon hat, würde ich gerne per Befehl festlegen von welchem Telefon angerufen wird. Oder ist es möglich das rufende Telefon innerhalb des Scriptes festzulegen? Man könnte dann für jeden User ein eigenes Script ablegen.

Vielen Dank schon einmal im voraus.


Gruß
Dieterlem

Hallo Dieterlem, wiillkommen auf Administrator.de!
Danke für deine Nachricht.
Ja das ist möglich. Ich habe dazu die Funktion oben mit einem zusätzlichen optionalen Parameter -phone versehen der es nun ermöglicht die Wählhilfe vor dem Wahlvorgang auf das entsprechende Endgerät umzustellen.

Bitte unbedingt die Hinweise zur Formatierung des Endgerätenamens in den Kommentaren zum Parameter lesen.

Beispiel für Aufrufe


Wichtiger Hinweis Damit das funktioniert muss die Einstellung für den zweiten Faktor bei der Fritzbox deaktiviert werden (Bestätigung über Telefon oder Google Authenticator) !

Viel Spaß damit.
Grüße Uwe
Mitglied: KB--38
KB--38 11.05.2020 um 22:07:34 Uhr
Goto Top
Hallo colinardo,

ich nutze deinen Skript um das Adressbuch auszulesen und auch neue Einträge zu erstellen.
Zunächst einmal Respekt für deine tolle Arbeit, das hat mir sehr weitergeholfen!

Nun habe ich allerdings ein kleines Problem:
Wenn ich neue Kontakte mit deutschen Umlauten anlegen will, werden die Umlaute im Fritz-Adressbuch nicht richtig dargestellt (z.B. Ã? bei ß usw.), also das encoden funktioniert dort nicht richtig.

Mein Skript sieht folgendermaßen aus (ich stringe mehr oder weniger nur das xml-Konstrukt zusammen, kann man ja schon in der ersten Zeile ganz gut erkennen) - hier habe ich die eigentliche Variable mal durch einen Klartext ersetzt:

Im letzten Teil rufe ich dann eben mit den zuvor definierten Parametern deine Funktion New-Request auf. Bis dahin werden die Umlaute im String noch korrekt dargestellt. Die Funktion wird auch ohne Fehler aufgerufen, aber wie oben beschrieben werden die Umlaute dann falsch kodiert im Fritz-Adressbuch dargestellt.
Hast du eine Ahnung wie man das korrekt stellen könnte (ich dachte an das charset im XML, aber ehrlich gesagt keine Ahnung wie dort was zusammenläuft)?
Mitglied: colinardo
colinardo 12.05.2020 aktualisiert um 09:42:18 Uhr
Goto Top
Servus @KB--38,

freut mich das dir das Skript hilfreich ist :-) face-smile.

Das geschilderte Verhalten liegt daran, dass der Kontakt-XML-String laut Dokumentation ein vollständiges XML-Document ist und somit auch ein eigenes Kodierungsschema besitzen kann. Da du in deiner Data-Struktur die XML-Declaration hier nicht explizit angibst kommt es dazu.
Füge die XML-Declaration mit Encoding-Attribut zu deiner Contact-Struktur hinzu, dann klappt es auch mit den Umlauten.

EInfaches Beispiel:


screenshot

Grüße Uwe
Mitglied: KB--38
KB--38 12.05.2020 um 19:32:07 Uhr
Goto Top
Hi Uwe,

genial, vielen Dank! Es hat funktioniert.

Komischerweise hatte ich auch mal versucht, utf-8 und einen XML-Header dem Request hinzuzufügen, damals hat es aber aus welchen Gründen auch immer dann nicht funktioniert (wahrscheinlich falscher Syntax meinerseits).
Wie auch immer, jetzt funktioniert alles wie es soll, vielen Dank!

Grüße
Mitglied: Marco8383
Marco8383 05.09.2020 um 10:38:48 Uhr
Goto Top
Hallo, da ich schon ewig nach einer Möglichkeit suche und nichts gefunden habe, frage ich mal hier nach :) face-smile

Gibt es irgendeine Möglichkeit ein "Online Telefonbuch" automatisch zu aktualisieren. Also zum Beispiel einmal in der Stunde? Im Moment wird das ja nur über Nacht einmal aktualisiert...
Mitglied: colinardo
colinardo 05.09.2020, aktualisiert am 06.09.2020 um 09:08:45 Uhr
Goto Top
Zitat von @Marco8383:
Gibt es irgendeine Möglichkeit ein "Online Telefonbuch" automatisch zu aktualisieren. Also zum Beispiel einmal in der Stunde? Im Moment wird das ja nur über Nacht einmal aktualisiert...
Hallo @Marco8383,
habe dir gerade eine neue Funktion dafür zum Skript oben hinzugefügt. Sie lautet Update-FBPhonebook. Diese rufst du mit dem Namen des Telefonbuches als Parameter bspw. so auf
Die Funktion triggert die Aktualisierung per AVM Default für alle hinzugefügten Online-Telefonbücher. Der Parameter mit den Namen des Telefonbuches bestimmt hier vornehmlich auf welchen Sync-Abschluss die Funktion hier warten soll. Die Funktion fragt dazu periodisch den Status der Synchronisierung des jeweiligen Telefonbuches ab und bei Erfolg liefert es alle Status-Variablen des Telefonbuchs inkl. Datum der letzten Aktualisierung zurück. Ohne den Parameter -wait wartet die Funktion nicht auf den Abschluss der Synchronisierung.

Hier eine Beispielausgabe der Funktion:

screenshot

Viel Spaß damit
Grüße Uwe
Mitglied: Marco8383
Marco8383 06.09.2020 um 07:44:09 Uhr
Goto Top
Hallo @colinardo, du bist ja mal krass schnell unterwegs :) face-smile Hab es eben getestet und es funktioniert super! Vielen DANK! Ich bin begeistert :) face-smile
Mitglied: colinardo
colinardo 06.09.2020 um 09:08:12 Uhr
Goto Top
Freut mich wenn ich helfen konnte :-) face-smile.
Mitglied: Fritz-Fanboy
Fritz-Fanboy 12.09.2020 um 22:54:31 Uhr
Goto Top
Hallo Zusammen,

bin auf diesen exzellenten Post gestoßen, da ich in England versuche meine Fritz Box 7590 an das UK SKY Broadband anzuschließen.
Ich muss meine 7590 Box in England auf Sky BSkyB VDSL2 Broadband einstellen. Sky verwendet das Protokoll MER/DHCP 61.

Dank TR-064 bin ich schon auf der Box und konnte u.A. LinkType .
Allerdings fehlen mir die relevanten Einträge unter: urn:dslforum-org:service:WANDSLInterfaceConfig:1.
In der 7590 Box unter ../wandsllinkconfigSCPD.xml laesst es nicht den Wert "IPoA" oder "CIP" zu, as per Kopie unten.

<name>LinkType</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>EoA</allowedValue>
<allowedValue>PPPoA</allowedValue>
<allowedValue>PPPoE</allowedValue>
<allowedValue>Unconfigured</allowedValue>
</allowedValueList>

Kurze Frage, wie bekomme ich die "wandsllinkconfigSCPD.xml" geaendert (re-importiert), so dass ich wie folgt die Werte definiere:
Modulation Type existiert gar nicht in der AVM "wandsllinkconfigSCPD.xml" Datei
As per Standard "UPnP-gw-WANDSLLinkConfig-v1-Service.pdf"

Mein Abänderung-Wunsch:
<stateVariable sendEvents="no">
<name>LinkType</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>EoA</allowedValue>
<allowedValue>IPoA</allowedValue>
<allowedValue>PPPoA</allowedValue>
<allowedValue>PPPoE</allowedValue>
<allowedValue>CIP</allowedValue>
<allowedValue>Unconfigured</allowedValue>
</allowedValueList>
</stateVariable>

<stateVariable sendEvents="no">
<name>ModulationType</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>ADSL_G.dmt</allowedValue>
<allowedValue>ADSL_G.lite</allowedValue>
<allowedValue>G.shdsl</allowedValue>
<allowedValue>IDSL</allowedValue>
<allowedValue>HDSL</allowedValue>
<allowedValue>SDSL</allowedValue>
<allowedValue>VDSL</allowedValue>
</allowedValueList>
</stateVariable>

PS: Ich weiß allerdings nicht, ob ich zusätzlich auch noch per TR-069 den SKY ISP DHCP Option 60/61 konfigurieren muss.

Alles Gute aus England erstmal.
Mitglied: colinardo
colinardo 13.09.2020 aktualisiert um 00:49:12 Uhr
Goto Top
Zitat von @Fritz-Fanboy:

Hallo Zusammen,
Servus auf die Insel.

Kurze Frage, wie bekomme ich die "wandsllinkconfigSCPD.xml" geaendert (re-importiert),
Mit TR-064 überhaupt nicht. Erstens kannst du der Box nicht mit ändern einer XML Datei ein anderes Protokoll beibringen, zweitens müssen spezielle Änderungen für Provider an der Firmware selbst vorgenommen werden, also die Box neu geflasht/gefreezt werden.

PS: Ich weiß allerdings nicht, ob ich zusätzlich auch noch per TR-069 den SKY ISP DHCP Option 60/61 konfigurieren muss.
Funktioniert nicht, diese Optionen muss der Provider mit einer eigenen Firmware konfigurieren. TR-064 ist primär dafür da vorhandene für den Normalouser verfügbaren Funktionen als API bereitzustellen. Für solche Grundlegenden Änderungen ist TR-064 nicht gedacht.
Sky verwendet das Protokoll MER/DHCP 61.
Soweit ich das gelesen habe haben die in letzter Zeit auf standardmäßiges PPPoA gewechselt ohne Identification via DHCP Option , ich würde also nochmal den Provider kontaktieren.

Ich würde mir stattdessen einen kleinen Mikrotik Router beschaffen, da kannst du schalten und walten wie du willst, DHCP Options sind da ein Klacks.

Grüße Uwe
Mitglied: strzata
strzata 30.01.2021 um 14:12:53 Uhr
Goto Top
Auch ich bin total begeistert von der Arbeit von colinardo! Seit einem Jahr suche ich nach einem Code als Wahlhilfe in der FB. Eigentlich bin ich mehr in .Net unterwegs (da gibt es leider noch nichts zu dem Problem). Aber die PowerShell wird's auch richten können. Das Script funktioniert auf Anhieb, auch auf unserer 7270, die nur zum Telefonieren über die Telekom (unser "altes" ISDN) genutzt wird. Eine zweite Leitung mit 100er DSL haben wir bei der Thüringer Netcom über eine 7590.

Ich benötige im Script nur die Wahlhilfe. Damit ist es möglich, mit Doppelklick auf eine Telefonnummer in der Patientenakte sofort einen Anruf zu tätigen. Problem ist jetzt nur noch folgendes:

Hinter der 7270 (wird in Kürze durch eine 7590 ersetzt) hängt über S0 eine TK ELMEG ICT 880 mit vielen Telefonen und zwei Faxgeräten. Wenn das Script gewählt hat, tut sich erstmal weit und breit nix. Erst wenn der Angerufene abhebt, klingelt eins unserer Telefone. Gibt es eine Funktion, die es ermöglicht, schon vorher auf die Leitung zu kommen, so dass man das Anwählen (Rufton) schon mitbekommen kann?

Viele Grüße
Norbert
Mitglied: colinardo
colinardo 30.01.2021 aktualisiert um 15:58:50 Uhr
Goto Top
Hallo Norbert.
Freut mich das das Skript dir eine Hilfe ist. 👍
Erst wenn der Angerufene abhebt, klingelt eins unserer Telefone.
Das Verhalten ist normal und von AVM so vorgesehen. Steht auch so in der Doku von AVM. => https://service.avm.de/help/de/FRITZ-Box-Fon-WLAN-7490/017p1/hilfe_fon_w ...
Gibt es eine Funktion, die es ermöglicht, schon vorher auf die Leitung zu kommen, so dass man das Anwählen (Rufton) schon mitbekommen kann?
Du kannst auch ohne schon ohne das das entsprechende Telefon erst klingelt den Hörer des Telefons das in der Wahlhilfe angegeben ist abnehmen, du wirst dann direkt ohne Umwege mit der Wahl-Leitung verbunden die du mit der Wahlhilfe angewählt hast, wenn das Telefon direkt an der FB hängt oder damit verbunden ist (DECT/TAE/IP).

Grüße Uwe
Mitglied: strzata
strzata 30.01.2021 um 19:48:58 Uhr
Goto Top
wenn das Telefon direkt an der FB hängt oder damit verbunden ist (DECT/TAE/IP).

Schade, dann wird es wohl nichts. Ich könnte ein analoges Telefon am Tresen nur für das Calling einrichten, brauche es im Schaltschrank nur umzustecken auf FON1 der FB. Aber dann ist es als Teilnehmer in der TK verloren (Gespräche von draussen könnte es zwar entgegennehmen, aber Weiterverbinden ist dann unmöglich). Gibts auch kein Event? Ich habe unseren CallMonitor in Vb.net programmiert. Da fange ich RING, CALL, CONNECT und DISCONNECT ab (TCP Client). Mehr aber auch nicht. Anrufen kann ich von diesem Teil nicht. Und wahrscheinlich auch nicht die Leitung überwachen.

Von der TK gehen 8 analoge und 8 ISDN ins gesamte Gebäude. Ist seit 30 Jahren so. Muss mal drüber schlafen, ob ich da mit einer Weiche was abbeissen kann. Kann man wenigstens mit einer Funktion abfragen, ob der gerufene Teilnehmer besetzt ist? Das würde schon eine erhebliche Erleichterung bedeuten, denn man müsste auf Verdacht nicht ellenlang warten, ob das Telefon klingelt oder nicht.

@colinardo: Es ist höchst bewundernswert und ich habe die größte Hochachtung davor, dass Du nach all den Jahren noch immer da bist für Hilfe und Unterstützung! Ich danke Dir ganz herzlich.

Viele Grüße
Norbert
Mitglied: colinardo
colinardo 30.01.2021, aktualisiert am 01.02.2021 um 12:21:06 Uhr
Goto Top
Zitat von @strzata:

Gibts auch kein Event?
Nein, TR-064 kennt leider kein Event-Subscription.
Kann man wenigstens mit einer Funktion abfragen, ob der gerufene Teilnehmer besetzt ist?
Das wird schwierig wenn überhaupt würde ich hier eine vernünftig konfigurierbare Telefonanlage einsetzen (z.B mit einer Asterisk wäre das alles kein Thema), oder TAPI mit entsprechendem Equipment am Tresen. Schau dir mal die nativen TAPI Funktionen von Windows an, damit kannst du auch problemlos via Code einen Wahlvorgang initiieren.

@colinardo: Es ist höchst bewundernswert und ich habe die größte Hochachtung davor, dass Du nach all den Jahren noch immer da bist für Hilfe und Unterstützung! Ich danke Dir ganz herzlich.
Mach ich gerne, keine Ursache.

Grüße Uwe
Mitglied: strzata
strzata 31.01.2021 um 09:52:31 Uhr
Goto Top
Um TAPI hab ich bis jetzt immer einen großen Bogen gemacht. Stand auf der ellenlangen Liste ganz hinten. Meine ELMEG (s.o.) ist eigentlich eine gute und nicht billige Anlage. Und ich glaube, es gibt auch einen TAPI-Treiber dazu. Mehr weiss ich aber darüber nicht. Heute will ich erstmal den Monitor und den Caller fertigbekommen (ini-Dateien und Parameterübergabe). Dank Deinem Code bin ich dabei schon fast am Ziel.

Schöne Grüße
Norbert
Mitglied: colinardo
colinardo 31.01.2021 aktualisiert um 11:43:58 Uhr
Goto Top
Zitat von @strzata:

Und ich glaube, es gibt auch einen TAPI-Treiber dazu. Mehr weiss ich aber darüber nicht.
Die TAPI3 Lib ist ziemlich einfach zu handhaben, sind nur wenige Zeilen Code und in C# oder VB.NET problemlos nutzbar.
https://docs.microsoft.com/en-us/windows/win32/tapi/tapi-3-1-start-page
Wenn du mehr Infos oder Code zur Lib brauchst kurze PN.
Mitglied: oodoloo
oodoloo 13.07.2021 um 13:15:52 Uhr
Goto Top
Hallo zusammen,

erstmal vielen Dank für dein tolles Skript colinardo!
War wirklich froh als ich darauf gestoßen bin, als ich nach einer Möglichkeit gesucht habe eine Portfreigabe in meiner Fritzbox einzurichten, ohne mich an der Oberfläche der Fritzbox anmelden zu müssen.
Leider ist das genau die eine Aktion des Skriptes, die einfach nicht funktionieren möchte.

Ich erhalte leider immer die folgende Fehlermeldung:

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/;>"
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid Args</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
In C:\temp\FritzboxRemote.ps1:51 Zeichen:13
throw ([System.IO.StreamReader]($_.Exception.InnerExcepti ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : OperationStopped: (<?xml version="...>
</s:Envelope>:String) [], RuntimeException
FullyQualifiedErrorId : <?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/;>"
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid Args</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>

Ich habe eine Fritzbox 7530 mit der OS-Version 07.27.
Die Option “Zugriff für Anwendungen zulassen” ist aktiviert.
Für die Anmeldung über das Skript an der Fritzbox habe ich einen separaten Benutzer mit den Berechtigungen “Fritz!BoxEinstellungen”, “Sprachnachrichten...” und “Smart Home” angelegt.
Der Rechner von welchem ich das Skript ausführe ist auch im selben Netzwerk und ich versuche auch nur für den Rechner eine Freigabe einzurichten, von dem ich auch das Skript ausführe.

Folgende Daten habe ich an das Skript übergeben:
ExternalPort: 8088
Protocol: TCP
InternalClient: 192.168.160.9
InternalPort: 8088
Description: Test

Ich habe auch schon versucht den AVM-Support zu kontaktieren, aber deren Antworten waren leider nur bedingt bis gar nicht zu gebrauchen.

1. Antwort:
..."Leider klappt hier die Erstellung von Portfreigaben per Powershell-Skript nicht und wird mit entsprechenden Fehlermeldungen quittiert.

Diese Vorgehensweise wird von der FRITZ!Box nicht unterstützt.
Weshalb das so ist, entzieht sich allerdings meiner Kenntnis.

https://avm.de/service/fritzbox/fritzbox-7530/wissensdatenbank/publicati ...;

...

Damit wollte ich mich nicht zufrieden geben und habe nochmal nachgehakt und dann kam die 2. Antwort:

..."Informationen zu FRITZ!Box-Schnittstellen und -Protokollen, die Sie für die Realisierung eigener Entwicklungs-Projekte benötigen, finden Sie auf unserer Internetseite für Entwicklungssupport (https://avm.de/service/schnittstellen/).

Ihre Hinweise zu der dort bereitgestellten Dokumentation nehmen wir gerne per E-Mail unter entwicklungssupport@avm.de entgegen.

Ich hoffe, Ihnen damit weitergeholfen zu haben"...

Und aufgrund dieser Antworten bin ich leider noch nicht wirklich einen Schritt weitergekommen.

Vielleicht hat hier jemand eine Idee, woran es liegen könnte oder weiß sogar was genau das Problem ist. Bin für jeden Rat dankbar!

Viele Grüße
Dennis
Mitglied: colinardo
colinardo 13.07.2021 aktualisiert um 15:32:00 Uhr
Goto Top
Servus Dennis.
Zitat von @oodoloo:
Ich erhalte leider immer die folgende Fehlermeldung:
Ich habe eine Fritzbox 7530 mit der OS-Version 07.27.
Die Option “Zugriff für Anwendungen zulassen” ist aktiviert.
Für die Anmeldung über das Skript an der Fritzbox habe ich einen separaten Benutzer mit den Berechtigungen “Fritz!BoxEinstellungen”, “Sprachnachrichten...” und “Smart Home” angelegt.
Der Rechner von welchem ich das Skript ausführe ist auch im selben Netzwerk und ich versuche auch nur für den Rechner eine Freigabe einzurichten, von dem ich auch das Skript ausführe.

Folgende Daten habe ich an das Skript übergeben:
ExternalPort: 8088
Protocol: TCP
InternalClient: 192.168.160.9
InternalPort: 8088
Description: Test
OK.
Ich habe auch schon versucht den AVM-Support zu kontaktieren, aber deren Antworten waren leider nur bedingt bis gar nicht zu gebrauchen.

1. Antwort:
..."Leider klappt hier die Erstellung von Portfreigaben per Powershell-Skript nicht und wird mit entsprechenden Fehlermeldungen quittiert.
Diese Vorgehensweise wird von der FRITZ!Box nicht unterstützt.
Natürlich Blödsinn da hatte der Supporter keine Ahnung von TR-064 :-) face-smile.
Vielleicht hat hier jemand eine Idee, woran es liegen könnte oder weiß sogar was genau das Problem ist. Bin für jeden Rat dankbar!
Ist die 2 Faktor-Bestätigung von Aktionen per Telefon/Authenticator App bei dir aktiviert (System > Fritz!BOX-Benutzer > Zusätzliche Bestätigung)? Wenn ja dann geht das per Skript nicht. Diese Einstellung muss dafür zwingend deaktiviert werden.
Ansonsten lege den Rechner mal manuell in den Freigaben an und lösche dann nur die Portfreigabe und lass den Rechner aber weiterhin in der Liste drin, so dass nur der Rechner ohne Freigabe dort drin steht, und starte dann erneut das Skript. Bei manchen Boxen ist das Ausführen der Funktion auch manchmal erst bei mehrmaligen hintereinander ausführen erfolgreich.

Klappt hier im Test noch einwandfrei mit einer 7590 mit FW 07.27.

Grüße Uwe
Mitglied: oodoloo
oodoloo 13.07.2021 aktualisiert um 18:45:27 Uhr
Goto Top
Hi Uwe,

danke dir für deine schnelle Rückmeldung!
Tja, so einfach kann es manchmal sein :-) face-smile! Das Abschalten der 2-Faktor-Bestätigung war scheinbar der ausschlaggebende Tipp!
Danach konnte ich die Freigabe per Skript erstellen. Zwar hatte ich auch zwischendurch das Problem, dass ich einen Befehl mehrmals absenden musste, damit die Freigabe angelegt wird, aber immerhin hat es überhaupt mal funktioniert.
Gefühlt hat es besser funktioniert, wenn ich eine Freigabe erstellt hatte und dann immer wieder den gleichen Request abgesetzt habe, eben dann nur mit dem Flag Enabled auf true oder false. Wollte das Skript nämlich eigentlich für eine Automatisierung nutzen und wenn man sich nicht darauf verlassen kann, dass die Fritzbox die Freigabe annimmt, ist das leider schon etwas ungünstig.

Vielen Dank für deine Hilfe!

Viele Grüße
Dennis
Mitglied: colinardo
colinardo 13.07.2021 um 18:50:10 Uhr
Goto Top
Tja, so einfach kann es manchmal sein :-) face-smile face-smile! Das Abschalten der 2-Faktor-Bestätigung war scheinbar der ausschlaggebende Tipp!
👍
Vielen Dank für deine Hilfe!
Immer gerne.
Mitglied: speedy7.1
speedy7.1 17.07.2021 aktualisiert um 02:54:02 Uhr
Goto Top
Hey colinardo,

auch ich schließe mich den Kollegen von oben an und bekunde meinen aufrichtigsten Respekt für deine Arbeit.
Skript kopiert und funktioniert auf Anhieb.
Ich habe allerdings keine Frage, sondern eher eine neue Funktion für dich zum Einbauen:

Sicherlich kannst du dieses auch für deine Funktionssammlung nutzen, verbessern und einbauen, wenn du es möchtest. Evtl. folgt noch bei Zeiten eine Funktion Update-FBPhoneBookEntry.

Ein Frage habe ich aber trotzdem noch:
Erwägst du evtl. irgendwann dieses Skript als Modul auf GitHub hochzuladen und via PowerShell-Gallery verfügbar zu machen?

Vielen Dank und schöne Grüße
Mitglied: colinardo
colinardo 18.07.2021 aktualisiert um 17:18:05 Uhr
Goto Top
Servus @speedy7.1 .
Zitat von @speedy7.1:

Hey colinardo,

auch ich schließe mich den Kollegen von oben an und bekunde meinen aufrichtigsten Respekt für deine Arbeit.
Skript kopiert und funktioniert auf Anhieb.
Danke für die 💐 :-) face-smile.
Ich habe allerdings keine Frage, sondern eher eine neue Funktion für dich zum Einbauen:
...
Sicherlich kannst du dieses auch für deine Funktionssammlung nutzen, verbessern und einbauen, wenn du es möchtest. Evtl. folgt noch bei Zeiten eine Funktion Update-FBPhoneBookEntry.
Herzlichen Dank für deinen Beitrag 👍. Habe die Funktion noch etwas optimiert und oben ergänzt, zusätzlich die Funktion zum Update von Einträgen habe ich dir schon mal abgenommen. Zusätzlich auch noch ein paar Wifi-Funktionen ergänzt wenn man gerade dabei ist.
Ein Frage habe ich aber trotzdem noch:
Erwägst du evtl. irgendwann dieses Skript als Modul auf GitHub hochzuladen und via PowerShell-Gallery verfügbar zu machen?
Nein, das bleibt an seiner Geburtsstätte bei Administrator.de ;-) face-wink.

Grüße Uwe
Mitglied: Itschi
Itschi 19.09.2021 um 12:49:51 Uhr
Goto Top
Ich komme gerade mit einem Problem nicht weiter. Ab und an öffne ich mit dem Script einen Port auf der FritzBox (Add-FBPortmapping -ExternalPort 80 -InternalClient '192.168.100.100' -InternalPort 8080 -Protocol TCP -Description 'Server'), was einwandfrei funktioniert. Der Versuch den Port wieder zu schließen (Delete-FBPortMapping -ExternalPort 80 -InternalClient '192.168.100.100' -InternalPort 8080 -Protocol TCP -Description 'Server'), endet jedoch mit folgender Fehlermeldung .


Der geöffnete Port sieht aus, wie auf dem Screenshot.
Mitglied: colinardo
colinardo 19.09.2021 aktualisiert um 15:17:18 Uhr
Goto Top
"Hallo" @Itschi erst einmal, so viel Zeit sollte eigentlich immer noch sein!
Zitat von @Itschi:

Ich komme gerade mit einem Problem nicht weiter. Ab und an öffne ich mit dem Script einen Port auf der FritzBox (Add-FBPortmapping -ExternalPort 80 -InternalClient '192.168.100.100' -InternalPort 8080 -Protocol TCP -Description 'Server'), was einwandfrei funktioniert. Der Versuch den Port wieder zu schließen (Delete-FBPortMapping -ExternalPort 80 -InternalClient '192.168.100.100' -InternalPort 8080 -Protocol TCP -Description 'Server'), endet jedoch mit folgender Fehlermeldung .

Die Funktion Delete-FBPortmapping hat ja auch eigentlich nur zwei Parameter namens -ExternalPort und -Protocol, aber seit der neuen Firmware 7.27 funktioniert das Löschen der Portfreigaben via tr-064 nicht mehr, ist wohl ein Firmware-Bug. Kann ich hier auch nachstellen, das Löschen funktioniert definitiv nicht mehr, daran kann ich hier leider auch nichts ändern.
https://www.ip-phone-forum.de/threads/tr-064-addportmapping-fritz-box-74 ...

Grüße Uwe
Mitglied: Itschi
Itschi 19.09.2021 aktualisiert um 15:28:36 Uhr
Goto Top
Für meinen Zweck habe ich jetzt den Workaround gefunden, die bestehende Freigabe mit Add-FBPortmapping zu Enablen bzw. zu Disablen. Das funktioniert zum Glück noch. Mit der TR-064 Schnittstelle gab es meines Wissens ja schon öfters Probleme nach neue Fritz!OS Versionen. Schade, dass hier offenbar das Testing bei AVM nicht so recht greift...
Mitglied: Marco8383
Marco8383 07.10.2021 aktualisiert um 12:15:11 Uhr
Goto Top
Zitat von @colinardo:

Zitat von @Marco8383:
Gibt es irgendeine Möglichkeit ein "Online Telefonbuch" automatisch zu aktualisieren. Also zum Beispiel einmal in der Stunde? Im Moment wird das ja nur über Nacht einmal aktualisiert...
Hallo @Marco8383,
habe dir gerade eine neue Funktion dafür zum Skript oben hinzugefügt. Sie lautet Update-FBPhonebook. Diese rufst du mit dem Namen des Telefonbuches als Parameter bspw. so auf
Die Funktion triggert die Aktualisierung per AVM Default für alle hinzugefügten Online-Telefonbücher. Der Parameter mit den Namen des Telefonbuches bestimmt hier vornehmlich auf welchen Sync-Abschluss die Funktion hier warten soll. Die Funktion fragt dazu periodisch den Status der Synchronisierung des jeweiligen Telefonbuches ab und bei Erfolg liefert es alle Status-Variablen des Telefonbuchs inkl. Datum der letzten Aktualisierung zurück. Ohne den Parameter -wait wartet die Funktion nicht auf den Abschluss der Synchronisierung.

Hier eine Beispielausgabe der Funktion:

screenshot

Viel Spaß damit
Grüße Uwe

Hallo @colinardo,
ich habe mit dem Script bzw. der Funktion "Update-FBPhonebook" seit dem Update auf die Version 7.28 (FritzBox 6660 Cable) Probleme. Das Script läuft zwar ganz normal durch (ohne Fehlermeldung). Das hier ist das Ergebnis:


Das Problem ist, wenn ich ein Gespräche führe und das Script am Ende ist, bricht die Telefonverbindung ab. Hab das jetzt ein paar mal getestet.

Hast du eine Idee an was das liegt?
Mitglied: colinardo
colinardo 07.10.2021 aktualisiert um 12:14:30 Uhr
Goto Top
Servus @Marco8383 .
Das Problem ist, wenn ich ein Gespräche führe und das Script am Ende ist, bricht die Telefonverbindung ab. Hab das jetzt ein paar mal getestet.
Hast du eine Idee an was das liegt?
Deshalb hat AVM den per Default vorhandenen Update-Task wohl auch immer in die sehr späte Nacht gelegt. Das liegt wohl aber eher an der Implementierung von AVM beim Update des Telefonbuchs an sich. Benutzt du ein Fritz!Fon? Wenn ja wird das wohl deswegen während des Gesprächs versuchen ein Update des telefoneignen Telefonbuchs durchzuführen was dann zu einer Überlastung und Abbruch des laufenden Gesprächs führt.
Das Skript benutzt nur die regulär verfügbaren TR-064 Funktionen der Box nicht mehr und nicht weniger.
Ich würde aber trotzdem empfehlen das Update nicht durchzuführen wenn User aktiv sind, denn das Skript deaktiviert und aktiviert das Telefonbuch temporär ganz schnell hintereinander, um das Update des Telefonbuchs mit der Remote-Quelle auf der Box zu triggern und das könnte durchaus dazu führen das die Box hier allergisch drauf reagiert wenn gerade ein Gespräch läuft. Eine native Funktion zum Updaten der CardDAV Telefonbücher gibt es nämlich noch nicht im TR-064 Protokoll der Box. Diese Funktion wurde also aktuell als Workaround implementiert der es überhaupt ermöglicht dies automatisiert zu tun.

Grüße Uwe
Mitglied: Marco8383
Marco8383 12.10.2021 um 06:29:14 Uhr
Goto Top
Servus @Marco8383 .
Das Problem ist, wenn ich ein Gespräche führe und das Script am Ende ist, bricht die Telefonverbindung ab. Hab das jetzt ein paar mal getestet.
Hast du eine Idee an was das liegt?
Deshalb hat AVM den per Default vorhandenen Update-Task wohl auch immer in die sehr späte Nacht gelegt. Das liegt wohl aber eher an der Implementierung von AVM beim Update des Telefonbuchs an sich. Benutzt du ein Fritz!Fon? Wenn ja wird das wohl deswegen während des Gesprächs versuchen ein Update des telefoneignen Telefonbuchs durchzuführen was dann zu einer Überlastung und Abbruch des laufenden Gesprächs führt.
Das Skript benutzt nur die regulär verfügbaren TR-064 Funktionen der Box nicht mehr und nicht weniger.
Ich würde aber trotzdem empfehlen das Update nicht durchzuführen wenn User aktiv sind, denn das Skript deaktiviert und aktiviert das Telefonbuch temporär ganz schnell hintereinander, um das Update des Telefonbuchs mit der Remote-Quelle auf der Box zu triggern und das könnte durchaus dazu führen das die Box hier allergisch drauf reagiert wenn gerade ein Gespräch läuft. Eine native Funktion zum Updaten der CardDAV Telefonbücher gibt es nämlich noch nicht im TR-064 Protokoll der Box. Diese Funktion wurde also aktuell als Workaround implementiert der es überhaupt ermöglicht dies automatisiert zu tun.

Grüße Uwe

Hallo @colinardo,
danke für die schnelle Antwort. Das hört sich so an als könnte man da nicht viel machen. Hab den Support mal darauf hingewiesen, aber eine Hoffnung dass hier was gemacht wird habe ich nicht. Da kam dann nur als Antwort "Warum machen Sie das mit einem Skript, die FritzBox aktualisiert doch jede Nacht automatisch".
Mitglied: AixPrime
AixPrime 12.10.2021 um 15:08:55 Uhr
Goto Top
Ist es möglich mit dem Skript eine PPPoE Konfiguration zu manipulieren/erstellen? Rufnummern hinzuzufügen und SIP-Kennungen einzugeben?
Mitglied: colinardo
colinardo 12.10.2021 aktualisiert um 17:01:08 Uhr
Goto Top
Hallo erst einmal @AixPrime, willkommen auf Administrator.de!
Zitat von @AixPrime:

Ist es möglich mit dem Skript eine PPPoE Konfiguration zu manipulieren/erstellen?
Es ist zwar noch keine explizite Funktion dafür im Skript selbst integriert, Username, Password, etc. der PPPoE Config lassen sich damit aber problemlos ändern, siehe:
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanpp ...

Rufnummern hinzuzufügen und SIP-Kennungen einzugeben?
Auch hier gilt das gleiche, es ist noch keine einfache Funktion im Skript selbst vorhanden lässt sich aber leicht selbst ergänzen, siehe dazu die Funktion X_AVM-DE_AddVoIPAccount in der Doku
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_voi ...

Grüße Uwe
Mitglied: Adnimistrator
Adnimistrator 03.11.2021 um 16:30:49 Uhr
Goto Top
Die Portforwarding Commands funktionieren alle nicht auf meiner FB 6591 Cable mit FW 07.28.

Get-FBPortMappings
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/;>"
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid Args</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
In C:\Program Files\WindowsPowerShell\Modules\fritzbox_module\fritzbox_module.psm1:53 Zeichen:13

back-to-topthrow ([System.IO.StreamReader]($_.Exception.InnerExcepti ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : OperationStopped: (<?xml version="...>
</s:Envelope>:String) [], RuntimeException
+ FullyQualifiedErrorId : <?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/"
encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>402</errorCode>
<errorDescription>Invalid Args</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
Mitglied: colinardo
colinardo 03.11.2021 aktualisiert um 16:59:48 Uhr
Goto Top
Zitat von @Adnimistrator:

Die Portforwarding Commands funktionieren alle nicht auf meiner FB 6591 Cable mit FW 07.28.
Servus,
das wundert nicht denn diese wurden nur für einen DSL-Anschluss hinterlegt, für Kabel-Anschlüsse muss die Service-URL angepasst werden. Steht auch oben im Beitrag.

Zitat:

Die Funktionen die die DSL-Infos auslesen sind spezifisch auf das DSL-PPPoE-Interface ausgelegt, d.h. also wenn eure Fritzbox keine direkte PPPoE DSL-Verbindung aufbaut sondern das Internet z.B. über LAN1 oder einen Kabelanschluss bezieht, müssen die Funktionen angepasst werden. Das geschieht in jeder Funktion über die Parameter -URN und -action. Diese Strings findet man in der Dienstbeschreibungs-XML-Datei seiner FritzBox.
Dort finden sich zum WAN folgende Services:
urn:dslforum-org:service:WANDSLLinkConfig:1
urn:dslforum-org:service:WANEthernetLinkConfig:1
urn:dslforum-org:service:WANPPPConnection:1
urn:dslforum-org:service:WANIPConnection:1

Bei Kabelboxen sollte es die ServiceID urn:dslforum-org:service:WANIPConnection:1 sein.


Grüße Uwe
Mitglied: Adnimistrator
Adnimistrator 03.11.2021 um 17:32:33 Uhr
Goto Top
Im Abschnitt "Dokumentation zur TR-064 Schnittstelle" (hier) lese ich:
"die Dienstbeschreibungen mit den nötigen Parametern findet sich hier:
http://avm.de/service/schnittstellen/;

Ich klappe dort "Apps / TR-064" und erhalte ein paar Abschnitte mit Links auf pdf Dokumente.
Nirgends gibt es einen Unterpunkt für Portforwarding. Es gibt "Heimnnetz"; das pdf dazu liestet irgendetwas auf, was ic nicht verstehe. Ich weiß ja auch nicht, wonach ich suche.
" welche Aktionen es darin gibt lässt sich der oben verlinkten Dokumentation bei AVM entnehmen." AKtionen soll ich also finden. Ich finde aber keine.

Ich habe mal aus der tr64desc.xml "/layer3forwardingSCPD.xml" herausgepickt. Das war das einzige mit dem Substring "forward".
In dieser Datei gibt es einige Einträge mit "Get..." und "New..." beginnend, aber woher soll ich wissen, welche <action> darin das Powershell Command 'Get-FBPortMappings' benötigt???
"GetForwardNumberOfEntries"? Dem Namen nach liefert das nur eine Anzahl...

Ich verstehe den Zusammenhang dieses Gefummels überhaupt nicht.

Ich soll nun in das Script (welches "Script"? Ich habe nur zwei Moduldateien. Welche?") hineinschauen und eine $action Variable im New-Request "anschauen" - oder editieren?
Soll ich das Modul editieren?

Wo werden die Argumente -URN und -action übergeben? Und wem?

Ich möchte einfach nur "Get-FBPortMappings" ausführen.
Welcher Servicetyp und blabla ist doch eindeutig, oder nicht?
Ich verstehe nihct, warum ich an dieser Funktion noch etwas editieren soll und vor allem wie.
Müssen die Moduldateien geändert werden?
Mitglied: colinardo
colinardo 03.11.2021 aktualisiert um 17:44:33 Uhr
Goto Top
Zitat von @Adnimistrator:
$action Variable im New-Request "anschauen" - oder editieren?
Soll ich das Modul editieren?
Müssen die Moduldateien geändert werden?
Ja, die Funktion muss im Modul angepasst werde. Habe das jetzt für dich mal übernommen und die Funktionen jetzt gerade mal so angepasst, dass für die unterschiedlichen WAN-Verbindungsarten die passende "urn" benutzt wird. Hatte das bisher noch nicht eingebaut ist jetzt aber aktualisiert.
Mitglied: Adnimistrator
Adnimistrator 03.11.2021 um 18:05:25 Uhr
Goto Top
Danke, ich habe das zip File erneut heruntergeladen und habe die 2 Files ersetzt. Auch noch Import-Module (...) ausgeführt, aber ich erhalte die selbe Fehlerresponse.
Waren die Files auf dem Webserver erneuert?
Mitglied: colinardo
colinardo 03.11.2021 aktualisiert um 18:31:09 Uhr
Goto Top
Zitat von @Adnimistrator:

Danke, ich habe das zip File erneut heruntergeladen und habe die 2 Files ersetzt. Auch noch Import-Module (...) ausgeführt, aber ich erhalte die selbe Fehlerresponse.
Waren die Files auf dem Webserver erneuert?
Ja natürlich. Entweder Powershell Session beenden oder vor dem neu Laden remove-module fritzbox_module ausführen.

Hast du auch den Punkt oben unter Wichtige Information zum Fehler 402 gelesen? Wenn die 2FA Authentifizierung auf der BOX aktiviert ist kommt es in der Regel ebenfalls zu diesem Fehler.

Bitte bei weiteren Fragen => PN Merci.

Schönen Abend.
Mitglied: Adnimistrator
Adnimistrator 03.11.2021 um 18:38:01 Uhr
Goto Top
Remove Module und auch neue Session habe ich gemacht. 2 Factor Auth ist deaktiviert.
Immer noch der selbe Fehler. Muss die FritzBox neu gestartet werden?
Mitglied: colinardo
colinardo 04.11.2021 aktualisiert um 09:40:14 Uhr
Goto Top
Zitat von @Adnimistrator:

Remove Module und auch neue Session habe ich gemacht. 2 Factor Auth ist deaktiviert.
Immer noch der selbe Fehler. Muss die FritzBox neu gestartet werden?
Nein ein Reboot ist in der Regel nicht nötig kann aber nicht schaden je nachdem was du schon so alles umgestellt hast.

Habe das Modul einem Kollegen der das mal Testweise mit einer FB 6591 Cable mit aktueller Firmware testen kann zur Verfügung gestellt. Ergebnis:

screenshot

Also Ergebnis wie erwartet.
Bei deiner Box stimmt also etwas nicht. Vielleicht eine gebrandete Box bei der die Abfragen durch den Provider blockiert werden.
Mitglied: Adnimistrator
Adnimistrator 14.11.2021 um 20:15:09 Uhr
Goto Top
Die Box ist mein Eigentum. Ganz normal gekauft. Sie hat das neuest e OS drauf.

Ich verwerfe die Idee, sie mit Powershell zu administrieren.
Vielen Dank für den Versuch.
Heiß diskutierte Beiträge
question
AD Server von 2012 R2 auf Server 2019 R2 hochgesetzt. Domänenlevel noch 2012 Aber nun geht kein LDAPS . LDAP geht gelöst itititVor 1 TagFrageWindows Server18 Kommentare

Hallo zusammen, wir haben die Server 2012 R2 mit Server 2019 R2 ersetzt. Neue Server kein Inplace. Die neuen DCs haben IP und Name gleich ...

question
Euro Zeichen geht nicht mehr gelöst GwaihirVor 1 TagFrageWindows 1014 Kommentare

Hallo zusammen, bei einem User geht das Euro-Zeichen nicht mehr. Er kann es nur noch über Copy&Paste aus der Zeichentabelle einfügen. Auch STRG+ALT+E klappt nicht. ...

question
Bitlockerpartition versehentlich gelöscht Läppi findet nach Partitiosformatierung mbr gpt die Partition nicht wiederPCChaosVor 1 TagFrageWindows 1011 Kommentare

Hallo zusammen, Ich habe ein riesen Problem, das mir sonst einfach erschien. Ich hatte eine Bitlocker Partition D: auf meinem C: Laufwerk installiert. Weil Windows ...

question
Mini PC lüfterlossurvial555Vor 1 TagFrageHardware8 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer guten Lösung über System für staubintensive UmgebungenIch setzte zur Zeit 4 PCs in einem Lagerumfeld ein, ...

question
RDS 2019 - Excel2019 öffnet Dateien sehr langsam gelöst pr3adusVor 1 TagFrageWindows Server15 Kommentare

Guten Tag, ich habe ein Problem bei einem meiner Kunden: seit kurzem verwendet der Kunde meine RDS-Farm. Hier haben wir 2 RDS-Hosts und ein RDS-GW ...

question
Online Kalender gesuchtStefanKittelVor 1 TagFrageInternet8 Kommentare

Hallo, ein Kunde von mir sucht einen Online-Kalender zur Raumreservierung. Keine Datenschutzrelevanten Informationen. Es geht um 3-4 Besprechungsräume in einem Gebäude wo mehrere Firmen sind. ...

info
(Gehäuse) Schutzklasse wie IP60 und was die Zahlen bedeutenSt-AndreasVor 1 TagInformationHardware4 Kommentare

Schutzklassen wie IP51 oder IP6X ließt man immer wieder mal, vor allem bei Gehäusen oder mobilen Geräten. Wenn man besondere Anforderungen an ein Gerät (staubdicht, ...

question
Nextcloud - out of syncRoadmaxVor 1 TagFrageCloud-Dienste3 Kommentare

Hallo Zusammen, wir betreiben eine eigene interne Nextcloud 15 Instanz auf einem Ubuntu 16.04 mit Apache und haben seit geraumer Zeit immer mehr Probleme. 1. ...