Fritz!Box Schneller Reconnect unter Linux

Es gibt einige Gründe warum man gerne zu einem bestimmten Zeitpunkt seine IP Adresse wechseln möchte z.B. um IP Sperren zu umgehen um z.B. eine grade programmierte IP Sperre zu testen oder ähnliches. Erfreulicher Weise bieten die Meisten Router dafür eine interne Möglichkeit an, welche zu einer schnellen Trennung und einem schnellen Wiederaufbau der Internetverbindung führt. Dies geschieht meist über eine so genannte UPNP Statusinformationen. Eine solche Neuverbindung dauert meist nur um die 2 Sekunden wohingegen ein Neustart einer Fritz!Box meist länger als 30 Sekunden dauert.

Um diesen Effekt unter Windows hervorzurufen gibt es viele Programme welche sich beispielsweise in den Systemtray legen und per Klick eine Neuverbindung aufrufen. Nach einigem Recherchieren habe ich auch eine Möglichkeit gefunden, einen solchen Reconnect auch unter Linux auszuführen. Dabei beziehe ich mich auf eine Fritz!Box, da ich selber eine solche besitze (7170 FON WLAN).

Um den Reconnect hervorzurufen werden zwei Dateien benötigt. Einmal eine Datei, welche die UPNP-Informationen enthält die an den Router gesendet werden sollen und dann eine Datei, welche die Informationen an den Router sendet. Dies ist in dem Beispiel ein einfaches Bash-Skript.

Die Datei mit den Daten (data.txt):

<?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>

Die Datei zum übertragen der Daten (reconnect.sh):

#!/bin/bash
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 "@data.txt"

Die Datei reconnect.sh muss noch ausführbar gemacht werden. Dies geschieht entweder in einer Konsole mit dem Befehl „chmod +x reconnect.sh“ oder in einem Dateimanager wie Nautilus (Gnome) durch einen Haken bei „Rechtsklick/Eigenschaften/Berechtigung/Ausführbar“. Die fett markierten Stellen müssen gegebenenfalls noch angepasst werden. Wenn die Fritz!Box nicht über „fritz.box“ erreichbar ist muss an der Stelle die IP eingegeben werden (z.B: 192.168.178.1) und wenn die Datei reconnect.sh von einem anderen Verzeichnis aus ausgeführt wird muss „data.txt“ durch „/pfad/zur/datei/data.txt“ ersetzt werden.

Um nun einen neue IP zu bekommen reicht es einen Doppelklick auf „reconnect.sh“ zu machen.

34 Gedanken zu „Fritz!Box Schneller Reconnect unter Linux

  1. Funktioniert, aber bei Copy&Paste der Texte aufpassen! Die Anführungsstriche müssen ersetzt werden.

    Danke!

  2. Danke für den Hinweis! Ich habe die Anführungsstriche nun durch die entsprechenden HTMLspecial Ersatzzeichen ersetzt. Dadurch sollte man nun wieder problemlos „Copy & Pasten“ können.

  3. Bei funktioniert es leider nicht. Könnte es daran liegen, dass ich meiner Fritz!Box ein Zugangspasswort verpasst habe?
    Wenn ja, wie löst man dieses Problem?

    Danke und noch einen schönen Abend 😉

  4. Hi Hirsch,

    hast du den „Statusinformationen über UPnP übertragen“ angeschaltet? Bei meiner Fritz!Box (7170) mit aktuellster Firmware befindet sich das unter:

    „Einstellungen/Erweiterte Einstellungen/System/Netzwerk/UPnP/Statusinformationen über UPnP übertragen“

    Da muss ein Häkchen gemacht werden. Am Passwort sollte das nicht liegen.

  5. Moin,

    den Haken hatte ich nicht gesetzt.
    Es funktioniert leider trotzdem nicht. Ich habe eine FRITZ!Box Fon WLAN 7113 (UI) mit der aktuellen Firmware-Version 60.04.57.
    Könnte es daran liegen, dass ich zwei Netzwerkkarten eingebaut habe?

    Gibt es zufällig ein Programm oder Script, welches den Reconnect zu bestimmten Zeitpunkten ausführen kann?

    Danke 😀

  6. Moin,

    ist deine Box denn per „fritz.box“ erreichbar? Das Skript ist nämlich darauf angepasst. Wenn nicht, ersetze doch mal „fritz.box“ in dem Bash-Skript durch die IP der Fritz!Box. Gibt es eigentlich irgendeine Fehlermeldung?

    Zu deiner 2. Frage: Naja du könntest das Skript mit Cron regelmäßig ausführen lassen. Dafür musst dus nur in /etc/crontab eintragen. Sonst gibt es Programme wie jDownloader die einen Reconnect z.B. vor einem Download durchführen können. Das passt aber meist nicht mit den AGB der jeweiligen Downloaddienste zusammen…

  7. Hello 🙂

    Das habe ich auch schon probiert, 😛 meine IP Adresse einzutragen, obwohl meine Fritz!Box unter „fritz.box“ erreichbar ist.

    Danke, dann werde ich das mal mit „cron“ probieren, wenn es dann läuft. 😉

  8. Moin!
    Gibt es irgendeine Fehlermeldung bzw. irgendeine Ausgabe wenn du das Skript ausführst? Was ist wenn du den 2. Haken in den UPnP Einstellungen der Fritz!Box zusätzlich setzt, klappt es dann vielleicht?
    Du kannst ja auch mal mein kleines grafisches Tool ausprobieren, hab ich ganz vergessen hier im Blog zu veröffentlichen, werd ich gleich mal nachholen 😉 Download: https://blog.jbbr.net/files/fp_rec_gui/1.0/fb_rec_gui-1.0-bin.tar.gz
    Das ist bisher im Ubuntuusers Forum erhältlich (http://forum.ubuntuusers.de/topic/wie-kurz-verbindung-trennen-um-neue-ip-zu-bek/4/).
    Einfach das Archiv entpacken und die enthaltene Datei per Doppelklick ausführen. Es sollte dann ein kleines Router-Symbol rechts oben in der „Taskleiste“ mit den kleinen Symbolen erscheinen und mit einem Klick darauf sollte es zu einem Reconnect kommen.

  9. Juten Tag 🙂

    Wenn ich das über das Script probiere funktioniert es nicht. und ich bekomme auch nichts angezeigt (auch keine Fehlermeldung).
    Mit deinem grafischen Tool funktioniert es einwandfrei. 😀

    Wie kann ich jetzt aber dein Tool mit Cron zusammen bringen, denn ich muss ja immer noch manuell den Haken setzen.

    Einen schönen Tag wünsche ich noch 😉

  10. Freut mich das es damit funktioniert!
    Ich vermute dann gibt es wohl noch ein Problem mit den Anführungsstrichen oder so die nach dem kopieren zu Fehlern führen… Ich schaus mir mal an

    Das Tool bietet auch die Möglichkeit einen Reconnect direkt vom Terminal aus zu machen. Dafür muss man es mit dem Parameter „-nogui“ starten. Also ein Terminal öffnen und „./fb_rec_gui-1.0 -nogui“ eingeben.

    Um das ganze mit Cron zu realisieren öffnet man die /etc/crontab (Oder besser die User Crontab, die gilt nur für den aktuellen Nutzer und sollte sich mit „crontab -e“ bearbeiten lassen) und fügt dort folgende Zeile ein:

    1 * * * * /fb_rec_gui-1.0

    Die 1 gibt an, dass in der 1. Minute einer Stunde das Skript ausgeführt werden soll, die 2. Stelle also das 1. * gibt an, dass jeden Tag das Skript ausgeführt werden soll usw. Ersetzt werden sollte noch durch den Benutzernamen welcher das Skript ausführen soll und natürlich .
    Wenn der Reconnect mehrmals in der Stunde erfolgen soll z.B. 10 minütlich muss man die 1 durch */10 ersetzen.

    Ich nehme mal stark an, dass es auch GUIs zur Konfiguration von Cron Jobs gibt. Das würde unter anderem die Zeiteinstellungen vereinfachen.

    Gruß,
    foxx

  11. Soo, Grund für die Nichtfunktion waren wirklich wieder die Anführungsstriche… Hab jetzt mal den Code mit „<pre>“ und „overflow:scroll“ eingebunden. Damit sollte das Problem behoben sein und auch beim bearbeiten des Artikels müsste die Formatierung beibehalten werden (Anders als die Lösung mit den HTML Specialchars)

  12. Moinsen 😀

    Ich I D I O T hätte doch einfach mal das Script per Konsole starten sollen. das habe ich gerade getan, und siehe da, es kam die Fehlermeldung, dass bash den Befehl „curl“ nicht kennt. Ich habe dann kurzer Hand das Paket „curl“ installiert.
    Nun kommt aber das hier, was ich nicht verstehe.

    s:Client
    UPnPError

    401
    Invalid Action

  13. Hm, irgendwie kann ich die Fehlermeldung hier nicht posten.
    Das was da jetzt steht, ist jedenfalls nicht meine Fehlermeldung.

  14. Hm also in meiner E-Mail Benachrichtigung zu deinem Kommentar steht aber zumindest ein Teil der Fehlermeldung 😉
    Also probier doch mal beide Dateien noch einmal mit Copy & Paste aus dem Artikel hier zu kopieren. Vielleicht kommen die Fehlermeldungen durch den Fehler in den Anführungsstrichen.

    Aber du kannst auch einfach meine grafische Version nehmen – da ist curl integriert und wie gesagt kann man sie auch in der Konsole nutzen. Der Quellcode ist hier auch verfügbar.

  15. Achsoo – wegen der Länge oder sonstigen Eigenschaften wurde der Beitrag mit der Fehlermeldung als möglicher Spam gekennzeichnet und ich musste den noch genehmigen. Hab ihn nun freigeschaltet!

  16. Sooooo,

    jetzt habe ich dein grafisches Reconnect Tool mit der Option „-nogui“ in crontab eingefügt.
    Duffte kann ich nur sagen. 😉 😀

    Danke noch mal für deine Hilfe und das Tool!

  17. Bei mir geht es leider auch nicht. Erst hat auch curl gefehlt und jetzt kommt die Meldung (im Terminal), dass er data.txt nicht lesen kann. Ist aber im selben Ordner. Sieht wie folgt aus:
    "****@****:~$ ~/.jdownloader/reconnect/reconnect.sh
    Warning: Couldn't read data from file "data.txt", this makes an empty POST.
    <s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/&quot;
    s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;
    <s:Body>
    <s:Fault>
    <faultcode>s:Client</faultcode>
    <faultstring>UPnPError</faultstring>
    <detail>
    <UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
    <errorCode>502</errorCode>
    <errorDescription>XML error</errorDescription>
    </UPnPError>
    </detail>
    </s:Fault>
    </s:Body>
    </s:Envelope>
    "

  18. Hallo. Du musst das Skript von dem Ordner aus aufrufen, indem auch die data.txt liegt. Also in deinem Fall wär das „cd ~/.jdownloader/reconnect/“ und dann „./reconnect.sh“.
    Aber es sieht mir so aus, als ob du das Skript für den jDownloader verwenden möchtest. Dieser hat diese Art des Reconnects bereits integriert. Einfach bei der Routerauswahl den ersten Router (Nummer 0, „!AVM : !FRITZ BOX (All via UPNP)“) wählen.

  19. Hey Super, danke Dir.

    Ich hatte immer meine Fritz!Box eingegeben, da hat nichts funktioniert mit jdownloader.
    Aber ich brauchs auch ausserhalb mal ab und an. Das es mit dem Script nicht ging, lag daran, dass ich es einfach falsch eingegeben habe…bin neu bei Linux 😉

  20. Hi

    erstmal vielen Dank für die beiden Dateien.
    Ich habe beide Dateien erstellt und in das Verzeichnis „volume1/web“ gelegt.
    jetzt wollte ich direkt mal mit putty „exec(`./volume1/web/reconnect.sh`)“ ausführen, aber putty meldet dann „-ash: Syntax error: word unexpected (expecting „)“)“.
    An was kann das liegen?

  21. Hm, wenn du das in Putty eingibst gehe ich davon aus, dass du eine SSH Verbindung zu einem Linux Server aufgebaut hast. Dort wird in der Regel eine Shell wie z.B. Bash verwendet und in dieser werden ausführbare Dateien nicht mit exec() ausgeführt sondern direkt, ohne die exec Funktion. Also einfach „./volume1/web/reconnect.sh“.

  22. Das geht auch alles eine Ecke einfacher – zum einen mit wget (curl ist nicht auf jedem System installiert) und zum anderen ohne extra Textdatei:

    #!/bin/sh

    wget http://fritz.box:49000/upnp/control/WANIPConn1
    -q
    –cache=off
    –proxy=off
    –header=“Content-Type: text/xml; charset=utf-8″
    –header=“SoapAction: urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination“
    –post-data=’hier das zeug aus der data.txt einfuegen‘

    Gruß,
    Marcel.

  23. @ spaenge
    You can do it without the file data.txt. Just add its content into the reconnect.sh (everything in one single line saved as reconnect.sh):

    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 “

  24. Hallo,

    ich bekomme immer folgende Fehlermeldung:

    s:Client
    UPnPError

    401
    Invalid Action

    Kann mir jemand helfen? Es handelt sich um eine Fritz!Box mit dem neuesten Bios. Unter Windows funktioniert der Reconnect mit jdownloader (Upnp usw. sind aktiviert)

    Liebe Grüße
    Alex

  25. Pingback: GeekParadise | Schneller Reconnect der FRITZ!Box in Python

Kommentare sind geschlossen.