Erstellt vor 9 Jahren

Geschlossen vor 7 Jahren

#525 closed defect (fixed)

"get_ip -w" needs support for session ID

Erstellt von: Whoopie Verantwortlicher: oliver
Priorität: normal Meilenstein: freetz-1.2
Komponente: tools Version: devel
Stichworte: Beobachter:
Product Id: Firmware Version: xx.76

Beschreibung (zuletzt geändert von Whoopie)

"get_ip -w" doesn't work with firmware xx.76 because of the new session ID.

For the time being, the best would be to use one of two other methods by default.

Anhänge (2)

get_ip_ctlmgr_ctl.patch (1.2 KB) - hinzugefügt von oliver vor 7 Jahren.
get_ip_sleep_e.patch (394 Byte) - hinzugefügt von oliver vor 7 Jahren.

Alle Anhänge herunterladen als: .zip

Änderungshistorie (43)

comment:1 Geändert vor 9 Jahren durch Whoopie

(In [3604]) busybox: fix typo in udhcpc slack option (closes #526)
get_ip: make "-d" the default until "-w" gets session ID support (refs #525)
transmission: some improvements (refs #367), fix seed and finish directory check (refs #503)

comment:2 Geändert vor 9 Jahren durch markuschen

(In [3706]) * get_ip: -w (webcm query) works now from 04.33 to 04.76 firmware, -w switched back to default (closes #525)

comment:3 Geändert vor 9 Jahren durch markuschen

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert

comment:4 Geändert vor 9 Jahren durch oliver

(In [3721]) [freetz-stable-1.1] Merge in r3659, r3663, r3666, r3673:r3674, r3681, r3695:r3696, r3706, r3717, r3718 from trunk:

  • Add FritzBox 7112 (87.04.76)
  • Bump 7141 firmware version to 40.04.76
  • 7270 EN/A-CH: Version bump to 54.04.76
  • fix led-errormessage in fw-update process
  • remove obsolete kernel sources 04.67 and 04.70 for 7270
  • get_ip: -w (webcm query) works now from 04.33 to 04.76 firmware, -w switched back to default (refs #525)
  • fix: 7150 doesn't have minid
  • fix no_avm_exit patch for 7270

comment:5 Geändert vor 7 Jahren durch Whoopie

  • Beschreibung geändert (Diff)

get_ip -w geht nicht mehr mit 04.87 auf einer 7170.

root@fritz:/var/mod/root# sh -x /usr/bin/get_ip
+ local ip=
+ local queryfile=/usr/www/all/html/query.txt
+ local querystring=
+ local retval=0
+ sed -ne /var:n\[/p /usr/www/all/html/query.txt
+ [ <? repeat [ $var:n[min] $var:n[max] ] `<? query $var:n[$0] ?> !=  ]
+ querystring=var:n[0]=connection0:pppoe:status/ip
+ /usr/www/html/cgi-bin/webcm getpage=/usr/www/all/html/query.txt&var:n[0]=connection0:pppoe:status/ip
+ ip=Content-Type: text/plain

getcgivars(): Unsupported REQUEST_METHOD.
+ retval=1
+ [ 1 == 0 ]
+ echo get_ip error (exit code 1)
get_ip error (exit code 1)
+ exit 1

comment:6 Geändert vor 7 Jahren durch cuma

  • Beobachter buehmann hinzugefügt
  • Lösung fixed gelöscht
  • Status von closed nach reopened geändert

Kannst du dir das anschauen, buehmann?

comment:7 Geändert vor 7 Jahren durch buehmann

Gleiches Problem wie beim Callmonitor. Wenn wir die gleiche Lösung von dort übernehmen, bedeutet das, dass wir recht aufwendig mit Login/Session-ID hantieren müssen.

Vielleicht sollten wir in get_ip einfach auf ctlmgr_ctl zurückgreifen, sofern es vorhanden ist?

comment:8 Geändert vor 7 Jahren durch cuma

Ist es nicht so dass die 7270 07.88 schon solche Sessions nutzt? Dort funktioniert get_ip

comment:9 Geändert vor 7 Jahren durch buehmann

Da sind zwei Dinge zu unterscheiden: Beim Zugriff über das Webinterface wurde irgendwann die Session-ID eingeführt, die ab dann zu nutzen ist. Vorher und nachher gab's aber die Möglichkeit, auf der Kommandozeile direkt webcm getpage=... aufzurufen; das hat auch vorher wie nachher ohne Session-ID funktioniert. Jetzt bei den neueren Firmwares funktionert webcm getpage=... offenbar nicht mehr.

Wenn man den webcm-Aufruf nur genutzt hat, um Werte aus der AVM-Konfiguration zu lesen und zu bearbeiten, scheint es jetzt einen besseren Ersatz zu geben: http://www.wehavemorefun.de/fritzbox/index.php/Ctlmgr_ctl Gibt es allerdings in älteren Firmwares nicht; aber das könnte man ja testen.

Geändert vor 7 Jahren durch oliver

comment:10 Geändert vor 7 Jahren durch oliver

Ich hab die Änderung für ctlmgr_ctl in get_ip eingebaut. Wobei das eigentlich im falschen Case steht und einen eigenen bräuchte!? Aber es ersetzt ja diese Methode und funktioniert auch nur, wenn das ctlmgr_ctl Binary vorhanden ist.

comment:11 Geändert vor 7 Jahren durch buehmann

Zum falschen Case: Streng genommen heißt der Case ja nur falsch: webcm war ja bisher auch nur ein (Um-)Weg, um über den ctlmgr an die Daten zu gelangen. ;-)

comment:12 Geändert vor 7 Jahren durch cuma

Soll die externe Ip auch angezeigt werden wenn man den Internetzugang "mitbenutzt"?

# ./get_ip_TRUNK -d


# ./get_ip_TRUNK -e
<meine ip>

# ./get_ip_TRUNK -w
get_ip error (exit code 1)

# ./get_ip_PATCH -d


# ./get_ip_PATCH -e
<meine ip>

# ./get_ip_PATCH -w
get_ip error (exit code 255)

Im Webinterface steht

DSL		deaktiviert
Internet	Eine bestehende Internetverbindung im Netzwerk wird mitbenutzt. IP-Adresse: 192.168 ...

comment:13 Geändert vor 7 Jahren durch oliver

Die Frage ist was man mit der IP-Adresse auf einer Box macht, die nicht der Router ist und kein NAT macht!?

comment:14 Geändert vor 7 Jahren durch cuma

Da gibt es vieles. zB vsftpd der beim Start die externe IP für den passiven Transfer benötigt (wird mit "get_ip -e" gestartet). Oder die DynDns Clients. Und alles andere was man nicht gleich am Hauptrouter ausprobieren möchte

comment:15 Geändert vor 7 Jahren durch oliver

Das ging doch mit der alten Version auch nicht!?

comment:16 Geändert vor 7 Jahren durch cuma

Ne, sieht man ja in comment:12 . Muss deshalb ja nicht gut sein

comment:17 Geändert vor 7 Jahren durch oliver

  • Lösung auf fixed gesetzt
  • Status von reopened nach closed geändert
  • Verantwortlicher auf oliver gesetzt

In [7231]:

  • get_ip: Use ctlmgr_ctl to query IP if available (fixes #525)

comment:18 Geändert vor 7 Jahren durch SaschaBr

Ich habe mir heute eine neue Firmware mit r7259 gebaut, und seitdem schlagt get_ip -w mit "exit code 177" fehl. Auch mit 7245 hatte ich letzte Nacht eine Fehlermeldung von Opendd im Log.

comment:19 Geändert vor 7 Jahren durch oliver

Was bringt bei dir:

ip=$(ctlmgr_ctl r connection0 pppoe:status/ip)
retval=$?
echo $retval

Welche Firmware nutzt du?

comment:20 Geändert vor 7 Jahren durch SaschaBr

Oh sorry, vergessen: Ich benutze die 88er Firmware für die 7270v2.
Interresanter Weise bringt get_ip -w jetzt wieder die korrekte IP! (Ich musste allerdings grade meine Box neu starten: Onlinechanged hing mehrfach mit "…waiting")
Jetzt nach einem Neustart kommt nach diesen drei Zeilen "176". Wenn ich das Script get_ip richtig lese, ist bis 176 alles OK. (Klar, geht ja auch momentan wieder!)

Zuletzt geändert vor 7 Jahren von SaschaBr (vorher) (Diff)

comment:21 Antwort: Geändert vor 7 Jahren durch SaschaBr

Merwürdig:
Jetzt bekomme ich bei "get_ip -w" auf der Konsole wieder "get_ip error (exit code 177)". Beim Ausführen der drei Zeilen aus comment:19 bekomme ich "177" angezeigt. Was kann ich nun tun, um diesem Problem auf die Spur zu kommen?
(P.S.: OpenDD habe ich jetzt auf -d umgestellt, da ich ja schon mal das Problem hatte, dass es mit -e es manchmal nicht klappte, weil auch vsftpd -e nutzt, und die Abfragen dann zu kurz hintereinander kamen.)
(P.P.S.: Opendd speichert -e nicht ab!?)

comment:22 Geändert vor 7 Jahren durch oliver

Kommt denn trotzdem die IP zurück?

comment:23 als Antwort auf: ↑ 21 Geändert vor 7 Jahren durch sf3978

Replying to SaschaBr:

(P.P.S.: Opendd speichert -e nicht ab!?)

Evtl. in die Dateien "/tmp/flash/opendd/opendd.ip" und "/tmp/.opendd.ip" schauen.

comment:24 Geändert vor 7 Jahren durch cuma

  • Lösung fixed gelöscht
  • Status von closed nach reopened geändert

Ich bekommen mit 7270 04.88 + Kabelmodem die korrekte IP und den Returnwert 176. Soll wohl so sein??

ctlmgr_ctl r connection0 pppoe:status/ip; echo $?
88.x.y.z
176

opendd speichert die ip nur um zu vergleichen ob ein update nötig ist

Zuletzt geändert vor 7 Jahren von cuma (vorher) (Diff)

comment:25 Geändert vor 7 Jahren durch SaschaBr

@oliver: Bei -w nicht, mit allen anderen Parametern ja.
@sf3978: OpenDD speichert aber nur den Parameter -e nicht, —extquery und die anderen alle schon. Eventuel "nur" ein Problem mit dem -e?
@cuma: Als es gestern Abend kurz nach einem Neustart der Box mit -w funktionierte, kam auch "176" zurück. Scheint also zu stimmen.

Zuletzt geändert vor 7 Jahren von SaschaBr (vorher) (Diff)

comment:26 Geändert vor 7 Jahren durch cuma

Man kann bei opendd den Parameter speichern, damit man sich den der am besten in den jeweiligen Umgebung funktioniert auswählen kann.
EDIT: Evtl sollte get_ip den Parameter speichert, dann müsste nicht jedes Package dies machen

Zuletzt geändert vor 7 Jahren von cuma (vorher) (Diff)

comment:27 Geändert vor 7 Jahren durch SaschaBr

Wie ich oben schon mal schrieb: Wenn man get_ip mit -e zwei mal kurz hintereinander aufruft, so bekommt man bei der zweiten Abfrage auch hier einen Error. Ich glaube es war Exit-Code 1. (Das war damals auch der Grund, warum ich das bei OpenDD vom —extquery auf "leeres Optionsfeld" = -w geändert hatte. Aber das nur nebenbei.)

EDIT: Hier ein Auszug aus dem Konsolenfenster bei mehrfachem get_ip -e

root@fritz:/var/mod/root# get_ip -e
77.***.***.***
root@fritz:/var/mod/root# get_ip -e
77.***.***.***
root@fritz:/var/mod/root# get_ip -e
wget: no response from server
get_ip error (exit code 1)
Zuletzt geändert vor 7 Jahren von SaschaBr (vorher) (Diff)

comment:28 Geändert vor 7 Jahren durch cuma

"-e" ist wohl einfach unzuverlässig, so dass ein 2. Versuch oft die IP bringen könnte

# while true; do sleep 1; get_ip -e | sed 's/\..*/---/g'; done
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
88---
88---
88---
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
get_ip error (exit code 1)
88---
88---
88---
88---
88---
88---
88---
88---
get_ip error (exit code 1)
88---
88---
88---
88---
88---
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
get_ip error (exit code 1)
88---
88---
88---
88---
88---
88---
88---
88---
get_ip error (exit code 1)
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---
88---

Geändert vor 7 Jahren durch oliver

comment:29 Geändert vor 7 Jahren durch oliver

@SaschaBr
Kannst du bitte mal den angehängten Patch probieren. Musst ja nicht gleich ein neues Image wegen der Änderung bauen. Ist get_ip -e damit zuverlässiger?

comment:30 Geändert vor 7 Jahren durch SaschaBr

Hmmm…
Momentan kann ich gar keinen get_ip error provozieren, selbst ohne sleep 1 in get_ip (und ohne sleep 1 in der while-true-do-schleife) nicht. Mit dem sleep 1 dauert halt nur die Abfrage etwas länger. Ich werde heute abend nochmal testen, ich denke dyndns.org hat momentan genügen Rescourcen frei!?

comment:31 Geändert vor 7 Jahren durch cuma

Kann ich bestätigen, heute waren 30 Abfragen in einer Schleife korrekt.
Wie wäre es im Fehlerfall das wget mehrfach aufzurufen bis es funktioniert bzw eine Obergrenze erreicht ist?

comment:32 Geändert vor 7 Jahren durch cuma

In [7364]:

get_ip

  • without a parameter, try all 3 methods (order: webcm, extquery, dsld)
  • extquery: execute wget (max) 3 times to get the ip
  • webcm: do not return a local ip
  • dsld: check for an empty ip

(refs #525)

comment:33 Geändert vor 7 Jahren durch cuma

In [7369]:

get_ip: add option -a, —all [default] (refs #525)

comment:34 Geändert vor 7 Jahren durch kriegaex

Ich weiß, ich sollte einen Patch anhängen, aber ich mache das mal so, ist auch relativ unwichtig: Anstatt

ip="$(/sbin/showdsldstat | grep "0: ip" | cut -d\/ -f1 | cut -d ' ' -f3)"

könnte man schreiben

ip=$(/sbin/showdsldstat | sed -nr 's/0: ip ([0-9.]+).*/\1/p')

wenn man auf cut verzichten wollen würde - sed klappt auch mit Bordmitteln, wie ich auf meiner ungefreetzten Box gestern gesehen habe.

comment:35 Geändert vor 7 Jahren durch cuma

In [7375]:

get_ip

  • dsld: check for local ips too (seen on 7141)
  • dsld: update showdsldstat parsing, by kriegaex
  • webcm: allow more returnvalues, see file for details

(refs #525)

comment:36 Geändert vor 7 Jahren durch cuma

Jetzt müsste get_ip aber wirklich in allen Umgebungen funktionieren…
@kriegaex: Hättest auch gleich die Datei updaten können. Wie man sieht lernen alle beim Scripting dazu :)

comment:37 Geändert vor 7 Jahren durch SaschaBr

Ich muss da jetzt doch mal nachfragen:
Lese ich das aus r7376 und r7377 richtig heraus, dass die IP, die durch get_ip ermittelt wurde, jetzt gecached und für alle anderen Paketen, die die aktuelle IP benötigen, vorgehalten wird?

comment:38 Geändert vor 7 Jahren durch cuma

Ja, durch r7377 werden die erfolgreichen Anfragen auf checkip.dyndns.org für 1 Minute gecacht, wenn "onlinechanged offline" wird der Wert verworfen. Bei den anderen beiden Methoden bringt cachen keinen wirklichen Vorteil.

time get_ip -w 2>&1 | grep real
real    0m 0.10s

time get_ip -d 2>&1 | grep real
real    0m 0.10s

time get_ip -e 2>&1 | grep real
real    0m 1.88s

time get_ip -e 2>&1 | grep real
real    0m 0.09s

time get_ip -e 2>&1 | grep real
real    0m 0.10s

time get_ip -e 2>&1 | grep real
real    0m 0.08s

Ich hab diese beiden Changesets nicht diesem Ticket zugeordnet, da sie nichts mehr mit dem ursprünglichen Problem zu tun haben :)

comment:39 Geändert vor 7 Jahren durch oliver

In [7403]:

[freetz-stable-1.2]: Merge in r7330, r7334:7335, r7338, r7342, r7344, r7348, r7350:7351, r7353, r7355, r7361:7362, r7364, r7368:7370, r7375:7377, r7382:7383, r7389:7391, r7396 from trunk (refs #1396):


r7330 | oliver | 2011-07-13 00:02:36 +0200 (Mi, 13. Jul 2011) | 2 Zeilen

  • Fix external fuse dependency (only used for 2.6.13.1)

r7334 | oliver | 2011-07-13 15:39:48 +0200 (Mi, 13. Jul 2011) | 1 Zeile

  • remove_tr069 patch: Add condition for older firmwares with rc.init

r7335 | oliver | 2011-07-13 15:45:23 +0200 (Mi, 13. Jul 2011) | 1 Zeile

  • remove wlan patch: Add wpa_supplicant and avmstickandsurf file

r7338 | cuma | 2011-07-16 01:51:52 +0200 (Sa, 16. Jul 2011) | 1 Zeile
virtualip-cgi: mark it as "abandon" and show it only if "advanced" is selected


r7342 | er13 | 2011-07-17 15:18:08 +0200 (So, 17. Jul 2011) | 6 Zeilen
bash:

  • correct / add missing CONFIGURE_ENV values

target-tester:

  • add bash related tests

r7344 | er13 | 2011-07-17 15:47:59 +0200 (So, 17. Jul 2011) | 4 Zeilen
gdb:

  • disable expat, zlib, and other libraries/features explicitly, otherwise they might get linked in
  • uses system readline and not the bundled one

r7348 | er13 | 2011-07-17 22:22:35 +0200 (So, 17. Jul 2011) | 3 Zeilen
openvpn:

  • bump version to 2.2.1

r7350 | oliver | 2011-07-18 16:22:19 +0200 (Mo, 18. Jul 2011) | 2 Zeilen

  • aiccu: Fix sit module selection (aiccu needs it for heartbeat tunnel)
    • Add libpthread dependency

r7351 | oliver | 2011-07-18 16:24:14 +0200 (Mo, 18. Jul 2011) | 1 Zeile

  • virtualip: Write "deprecated" instead of "abandon" (by dileks)

r7353 | oliver | 2011-07-18 18:55:17 +0200 (Mo, 18. Jul 2011) | 5 Zeilen

  • kernel/Config.in: Fix depends for sit.ko
    • Only available if AVM firmware doesn't have IPv6 support (otherwise built-in)
    • and kernel version 2.6.19.2 (2.6.13.1 doesn't have sit module, higher kernel versions are all IPv6 enabled)
    • and ipv6 module is selected
  • reported by dileks

r7355 | oliver | 2011-07-18 21:53:15 +0200 (Mo, 18. Jul 2011) | 2 Zeilen

  • kernel/Config.in: Fix typo

r7361 | oliver | 2011-07-19 10:25:02 +0200 (Di, 19. Jul 2011) | 1 Zeile

  • remove tr069 patch: check if modsed was successful

r7362 | oliver | 2011-07-19 14:04:55 +0200 (Di, 19. Jul 2011) | 1 Zeile

  • remove tr069 patch: Fix modsed, check for rc.init first

r7364 | cuma | 2011-07-19 19:33:34 +0200 (Di, 19. Jul 2011) | 6 Zeilen
get_ip

  • without a parameter, try all 3 methods (order: webcm, extquery, dsld)
  • extquery: execute wget (max) 3 times to get the ip
  • webcm: do not return a local ip
  • dsld: check for an empty ip

(refs #525)


r7368 | er13 | 2011-07-19 21:10:35 +0200 (Di, 19. Jul 2011) | 3 Zeilen
fakeroot:

  • bump version to 1.16

r7369 | cuma | 2011-07-20 13:40:00 +0200 (Mi, 20. Jul 2011) | 1 Zeile
get_ip: add option -a, —all [default] (refs #525)


r7370 | cuma | 2011-07-20 13:47:02 +0200 (Mi, 20. Jul 2011) | 1 Zeile
lighttpd: fix location in external menu


r7375 | cuma | 2011-07-21 08:29:23 +0200 (Do, 21. Jul 2011) | 5 Zeilen
get_ip

  • dsld: check for local ips too (seen on 7141)
  • dsld: update showdsldstat parsing, by kriegaex
  • webcm: allow more returnvalues, see file for details

(refs #525)


r7376 | cuma | 2011-07-21 12:48:39 +0200 (Do, 21. Jul 2011) | 2 Zeilen
get_ip: default method could be set via webif
opendd, vsftpd & box_info: removed obsolete get_ip arguments


r7377 | cuma | 2011-07-21 14:11:32 +0200 (Do, 21. Jul 2011) | 1 Zeile
get_ip: cache for extquery (1 minute)


r7382 | buehmann | 2011-07-22 10:30:26 +0200 (Fr, 22. Jul 2011) | 5 Zeilen
Fix html "-e" (should HTML-escape the string "-e").

-e was interpreted by echo. Unfortunately, echo does not interpret --
to mean the end of options; hence this workaround …


r7383 | buehmann | 2011-07-22 12:45:23 +0200 (Fr, 22. Jul 2011) | 2 Zeilen
Use printf instead of workaround; refs #1426.


r7389 | oliver | 2011-07-23 12:32:51 +0200 (Sa, 23. Jul 2011) | 4 Zeilen

  • add dsl expert pages patch:
    • Doesn't work on 7390 → remove it
    • TODO: Update for new 7240 and 7270 firmwares
      • What's with 7320?

r7390 | er13 | 2011-07-23 13:34:04 +0200 (Sa, 23. Jul 2011) | 3 Zeilen

  • Use host tar to unpack packages again. busybox' tar doesn't support pax (aka POSIX 1003.1-2001) tar format and this causes more troubles than older tar versions not supporting -J flag.
  • Revise PKG_UNPACK rules, call decompress program explicitly instead of requiring tar to support xz/lzma related decompression flags.

r7391 | er13 | 2011-07-23 13:37:46 +0200 (Sa, 23. Jul 2011) | 4 Zeilen
transmission:

  • bump version to 2.33
  • use official tarball again

r7396 | oliver | 2011-07-24 10:35:19 +0200 (So, 24. Jul 2011) | 2 Zeilen

cpmaccfg: Disable if kernel layout != OHIO
UR8
  • It's not adapted to IKS and AR9

comment:40 Geändert vor 7 Jahren durch oliver

Funktioniert get_ip jetzt bei allen?

comment:41 Geändert vor 7 Jahren durch oliver

  • Beobachter buehmann gelöscht
  • Lösung auf fixed gesetzt
  • Status von reopened nach closed geändert
Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.