FritzBox/Skripte

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Öffentliche IP-Adresse auslesen
  2. Öffentliche IP-Adresse ändern
  3. Links

Über kurze Shellskripte die man in einem Terminal [1] eingibt, lassen sich verschiedene Dinge aus der FRITZ!Box auslesen oder ändern.

Öffentliche IP-Adresse auslesen

Meist wird die öffentliche IP-Adresse in der Konfigurationsoberfläche des Routers angezeigt und kann von dort ausgelesen werden.

Hinweis:

Ist die Oberfläche der FRITZ!Box durch ein Passwort geschützt (was sie sein sollte), funktioniert Variante 1 nicht mehr. Dann muss man Variante 2 verwenden.

Variante 1

Ein Einzeiler für die FRITZ!Box-Serie von AVM 🇩🇪:

wget 'http://fritz.box/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home' -q -O - | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>' | grep -Ev "^0+\." 

Dies funktioniert zumindest mit der FRITZ!Box Fon WLAN 7050 mit aktueller Firmware, sollte aber auch mit anderen Modellen funktionieren.

Variante 2

Mit UPnP kann man sich die externe IP-Adresse der FRITZ!Box auch anzeigen lassen, wenn die Weboberfläche passwortgeschützt ist. Um dieses Skript ausführen zu können, muss vorher das Programm cURL installiert werden.

1
curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1" /> </s:Body> </s:Envelope>" -s | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

Auch dieser Einzeiler wurde mit der FRITZ!Box Fon WLAN 7050 und FRITZ!Box WLAN 3131 getestet.

Das Skript oben funktioniert ebenfalls mit der FRITZ!Box 7490 bis zum Firmware Update FRITZ!OS 06.05. Ab dieser Version muss das Skript wie folgt angepasst werden:

1
curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

Mit wget mit einer FRITZ!Box 7490 getestet:

1
wget -qO- "http://fritz.box:49000/igdupnp/control/WANIPConn1" --header "Content-Type: text/xml; charset="utf-8"" --header "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" --post-data="<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>"  | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'

Öffentliche IP-Adresse ändern

Mit folgendem Einzeiler kann man die FRITZ!Box (getestet mit Fon WLAN 7050) mittels UPnP dazu bringen, sich neu zu verbinden und man erhält so eine neue externe IP-Adresse:

1
curl "http://fritz.box:49000/upnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:ForceTermination xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>"

Das Skript oben funktioniert ebenfalls mit der FRITZ!Box 7490 bis zum Firmware Update FRITZ!OS 06.05. Ab dieser Version muss das Skript wie folgt angepasst werden:

1
curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:ForceTermination xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>"

Mit der FRITZ!Box 7490 und Firmware Update FRITZ!OS 06.83(oder früher) ist eine Passworteingabe nötig. Das Skript muss wie folgt angepasst werden, wobei in dem Skript das eigene Fritzbox-Passwort eingetragen werden muss:

1
wget -q --user='' --password='HierEigenesPasswortEintragen' "http://fritz.box:49000/upnp/control/wanipconnection1" --header='Content-Type: text/xml; charset="utf-8"' --header='SoapAction: urn:dslforum-org:service:WANIPConnection:1#ForceTermination' --post-data='<?xml version="1.0" encoding="utf-8"?> <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <u:ForceTermination xmlns:u="urn:dslforum-org:service:WANIPConnection:1" /> </s:Body> </s:Envelope>'