Reconnect-Skript unter Linux

Mr. Brooks

Mitglied
Mitglied seit
6 Okt 2013
Beiträge
245
Punkte für Reaktionen
0
Punkte
16
Hi,

schon seit einer Weile bin ich auf der Suche nach einem Reconnect-Skript unter Ubuntu. Bei Windows 7 hatte ich ein kelines Tool mal heruntergeladen, tat seinen Dienst jahrelang. Ich habe hier https://wiki.ubuntuusers.de/pyLoad/#Reconnect-Script-fuer-FritzBox und hier https://wiki.ubuntuusers.de/FritzBox/Skripte/#ffentliche-IP-Adresse-aendern 2 Möglichkeiten gefunden, die aber beide nicht funktionieren. Ich habe die 7490 mit Firmware 6.83.

Beim 1. Skript (aus dem Pyload-Artikel) kommt:

Code:
./reconnect.sh
curl: (6) Could not resolve host: fritz.box
Auch im Browser komme ich über "fritz.box" nicht mehr zur FB-Oberfläche. Es geht nur über die Eingabe der IP. Keine Ahnung seit wann das nicht mehr geht oder ob es unter Linux generell nicht geht, ich verwende immer die IP. Im Skript geht die IP aber nicht. Wenn ich fritz.box durch die IP ersetze kommt wenn ich das "http:" vor der IP stehen lasse

Code:
./reconnect.sh
curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received.
oder ohne das http:

Code:
./reconnect.sh
curl: (3) <url> malformed
Bei der 2. Variante passiert nichts. Ich habe das letzte Skript mit 'wget' versucht. Starte ich dieses Skript kommt keinerlei Rückmeldung im Terminal, es wird aber auch keine neue IP angefordert (aus dem Log auf der FritzBox zu sehen).

Curl ist unter Ubuntu installiert. UPnP sollte auf der Fritzbox aktiviert sein, mein HTPC (Kodi) und auch mein Fernseher finden über deren UPnP-Browser Inhalte auf der Fritzbox. Die konkrete Einstellung habe ich aber bisher nicht auf der Fritzbox gefunden. Da wo sie laut Google liegen sollte (Heimnetzwerk / Netzwerk) gibt es nichts. Scheinbar wurde hier mit einem Firmware-Update die Menüstruktur geändert.
 

amatör

Mitglied
Mitglied seit
15 Feb 2014
Beiträge
401
Punkte für Reaktionen
10
Punkte
18
Wie genau gibst du das an, wenn curl malformed url antwortet? Und hast du auf dem Linux die Fritzbox als DNS-Server oder andere/zusätzliche?
 

Mr. Brooks

Mitglied
Mitglied seit
6 Okt 2013
Beiträge
245
Punkte für Reaktionen
0
Punkte
16
Das ganze Skript sieht dann so aus:

Code:
#!/bin/bash
curl "//192.168.10.1: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"
Unter Ubuntu habe ich im Netzwerkmanager eine statische IP eingerichtet und da beim DNS-Server 8.8.8.8 eingetragen. Bei Gateway steht 192.168.10.1. Keine Ahnung ob das so sein musste oder ob es anders nicht funktioniert hat. Der Netzwerkmanager ist manchmal etwas schwierig, ich war aber froh es ohne Änderungen an der /etc/network/interfaces hinbekommen zu haben. Sollte man den DNS-Server auch auf 8.8.8.8 stellen? Ich erinnere mich dunkel, dass ich auf dem Raspberry in der dhcpd.conf bei beiden (DNS-Server und Gateway) die IP der Fritzbox eingetragen aber. Was genau ich da mache, muss ich zugeben, weiß ich aber nicht. :confused:
 

amatör

Mitglied
Mitglied seit
15 Feb 2014
Beiträge
401
Punkte für Reaktionen
10
Punkte
18
Zum einen: Das URL-Format mit // am Anfang funktioniert zumindest bei meinem curl nicht und resultiert in (3) <url> malformed. Entweder mit htttp und Doppel-Slash oder beides weglassen.

Zum andern: Wenn dein Ubuntu bei 8.8.8.8 nach der Auflösung für fritz.box fragt, ist es klar, dass das nicht funktioniert. fritz.box kann nur von der Fritzbox aufgelöst werden. Also entweder nimmst du den DNS-Server, den die Fritzbox per DHCP liefert (da müsste sie selbst sein) oder du stellst fest die IP der Fritzbox ein oder du verwendest die Domain fritz.box eben nicht, sondern nur die IP-Adresse.
 

Mr. Brooks

Mitglied
Mitglied seit
6 Okt 2013
Beiträge
245
Punkte für Reaktionen
0
Punkte
16
Ich hab jetzt im Netzwerkmanager den DNS-Server auf 192.168.10.1 gesetzt, das ist die IP der Fritzbox. Wenn ich das Skript so ausführe wie es hier https://wiki.ubuntuusers.de/pyLoad/#Reconnect-Script-fuer-FritzBox steht (also mit 'fritz.box') kommt weiterhin die gleiche Meldung:

Code:
curl: (6) Could not resolve host: fritz.box
Nehme ich stattdessen die IP wie von dir vorgeschlagen kommt:

Code:
curl "192.168.10.1: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"
Code:
<?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:schemas-upnp-org:control-1-0">
<errorCode>401</errorCode>
<errorDescription>Invalid Action</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
Es wird quasi der Inhalt der Datei 'data.txt' ausgegeben.

Das gleiche passiert wenn ich mit http: und Doppelslash ausführe. Das Skript sieht dann so aus:

Code:
curl "http://192.168.10.1: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"
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,218
Punkte für Reaktionen
293
Punkte
83
Probier einfach mit "ping fritz.box" ob die IP erforderlich ist.

Die richtige Adresse
So ist es auch mit "aktuellen" Firmwares schon lange nicht mehr möglich, siehe...
https://www.ip-phone-forum.de/threads/fritz-box-reconnect-software-gesucht-fritz-os-06-50.287835/#post-2183121

curl_reconnect.sh
Code:
#!/bin/sh
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>"
Funktioniert trotz aktiver "Bestätigen" Sicherheitsfunktion.
 
Zuletzt bearbeitet:

Mr. Brooks

Mitglied
Mitglied seit
6 Okt 2013
Beiträge
245
Punkte für Reaktionen
0
Punkte
16
@ koyaanisqatsi

Heißt das jetzt, dass es gar nicht mehr geht oder nur nicht mehr so wie ich es oben versucht hatte? Wenn ich

Code:
curl "192.168.10.1:49000/igdupnp/control/WANIPConn1"
versuche kommt

Code:
curl "192.168.10.1:49000/igdupnp/control/WANIPConn1"
<HTML><HEAD><TITLE>404 Not Found (ERR_NOT_FOUND)</TITLE></HEAD><BODY><H1>404 Not Found</H1><BR>ERR_NOT_FOUND<HR><B>Webserver</B> Sun, 24 Sep 2017 16:10:33 GMT</BODY></HTML>
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,218
Punkte für Reaktionen
293
Punkte
83
Nee, das war mal farblich hervorgehoben und nicht komplett.
Probier mal das komplette Skript aus Post #6 und schau ins Ereignislog deiner Fritz!Box.
 

Whoopie

Aktives Mitglied
Mitglied seit
19 Okt 2004
Beiträge
848
Punkte für Reaktionen
7
Punkte
18
Hier mein Reconnect-Skript auf Basis von netcat:

Code:
#!/bin/sh

netcat -w 1 192.168.178.1 49000 <<EOF
POST /igdupnp/control/WANIPConn1 HTTP/1.1
HOST: fritz.box:49000
SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination"
CONTENT-TYPE: text/xml ; charset="utf-8"
CONTENT-LENGTH: 288

<?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>
EOF
 
  • Like
Reaktionen: koyaanisqatsi

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,218
Punkte für Reaktionen
293
Punkte
83
Moin Whoopie

Gefällt mir, da reicht dann auch der busybox nc und kann direkt als Funktion in die laufende Bash (whatever) inkludiert werden...

fbrecon (Schnöde Textdatei ohne das x Flag)
Code:
fbrecon () {
nc -w 1 192.168.178.1 49000 <<EOF
POST /igdupnp/control/WANIPConn1 HTTP/1.1
HOST: fritz.box:49000
SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination"
CONTENT-TYPE: text/xml ; charset="utf-8"
CONTENT-LENGTH: 288

<?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>
EOF
}
:rolleyes: ( Und klappt natürlich auch auf den Androiden ohne curl )

Anwendungsbeispiel
Screenshot_2017-09-25-13-44-05.png
 
Zuletzt bearbeitet:

PadMan

Neuer User
Mitglied seit
2 Sep 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
[...] da reicht dann auch der busybox nc und kann direkt als Funktion in die laufende Bash (whatever) inkludiert werden...

fbrecon (Schnöde Textdatei ohne das x Flag)
Irgendwie bin ich gerade verwirrt...

Wie füttert man korrekt unter Ubuntu die Shell und unter Android (10) mit ConnectBot?
 
Zuletzt bearbeitet:

Mr. Brooks

Mitglied
Mitglied seit
6 Okt 2013
Beiträge
245
Punkte für Reaktionen
0
Punkte
16
Ich nehme dafür unter Android (bei mir noch Pie) nicht ConnectBot sondern Termux. Das ist für SSH von Android aus eher ungeeignet - obwohl es grds. geht - aber man kann i.V.m. Tasker sehr einfach Scripte ausführen.
 

koyaanisqatsi

IPPF-Urgestein
Mitglied seit
24 Jan 2013
Beiträge
12,218
Punkte für Reaktionen
293
Punkte
83
Moin


Android 10
Keine Ahnung, hab hier 4.2 , 7.0 und 9.
Ab 7.0 wirds schon schwierig ein beschreibbares Verzeichnis zu finden.
Meine Aussage damals bezog sich noch auf 4.2.

Beispiel HUAWEI Media Tablet ( 7.0 )
Screenshot_20200407-110756.png

Ubuntu
Ist auch nur ein Linux ;) ( Debianbasiert )
Das Skript fbrecon wird mittels . in die aktuelle Shell als Funktion inkludiert.
Dabei passiert erstmal nichts, keine Ausgabe.
Das ist üblich unter Linux, kein Fehler, keine Ausgabe.
...abgesehen von der Tatsache, dass "fbrecon", das Skript als auch die Funktion, keine Fehlerbehandlung machen.
Danach ist das Kommando "fbrecon" Pfadunabhängig verfügbar.
Also einfach mal tippen: fbrecon
...und die Eingabetaste drücken.
Die Funktion kann mit "set" ausgegeben werden.

CGI
Unabhängig vom OS des Mobilen Gerätes, nur eine Verbindungsmöglichkeit zu deinen Ubuntu Apache2 Webserver bedarf es dazu.
Das CGI Verzeichnis befindet sich bei mir: /usr/lib/cgi-bin
Da kommt das Skript "fbrecon" rein.
Dann die Datei "fbrecon.cgi" darin erstellen, mit folgenden Inhalt...
fbrecon.cgi
Code:
#!/bin/sh
. /usr/lib/cgi-bin/fbrecon
echo "Content-Type: text/plain
"
fbrecon
Die Rechte in cgi-bin setzen...
Code:
chown -v www-data.www-data /usr/lib/cgi-bin/fbrec*
chmod -v u=rwx,g=,o= /usr/lib/cgi-bin/fbrec*
...ausprobieren, auch mit den Mobiles ;) ...
Screenshot_20200407-120747.png

Jetzt verstanden?
 
Zuletzt bearbeitet:
3CX

Neueste Beiträge

Statistik des Forums

Themen
234,984
Beiträge
2,054,174
Mitglieder
355,367
Neuestes Mitglied
UTIL3020