Box-Info von trunk

So eine kleine Anmerkung mit get_ip. Ich hatte es auf einer Box ohne Internetverbindung ausgeführt:
Code:
/var/mod/root # get_ip
-
/var/mod/root # get_ip -d

/var/mod/root # get_ip -e
wget: bad address 'checkip.dyndns.org'
get_ip error (exit code 1)
Sollten wir die Ausgabe in solchen Fällen nicht vereinheitlichen und immer '-' ausgeben, wie webcm es tut?
Warum ich es getestet hatte? Die Option -d greift auf dsld und fragt dort die Adresse ab. Was passiert in dem Fall mit dem Kabel-Modem oder überhaupt einem Modem über WAN? Ich will da nicht wieder einen Sonderfall einpflegen, der nicht alle glücklich macht. Kann jemand von Kabelmodembesitzer mir die Ausgaben von get_ip in allen seinen Optionen bitte posten?

MfG
 
[...]
Kann jemand von Kabelmodembesitzer mir die Ausgaben von get_ip in allen seinen Optionen bitte posten?

Code:
/var/mod/root # get_ip -d
xxx.193.yyy.75
/var/mod/root # get_ip -e
xxx.193.yyy.75
/var/mod/root # get_ip -w
xxx.193.yyy.75
/var/mod/root # get_ip
xxx.193.yyy.75
/var/mod/root # get_ip -?
get_ip - determine external IP address

Usage: /usr/bin/get_ip [option]
    -d, --dsld     - use showdsldstat method (use only with kernel 2.6 firmwares)
    -e, --extquery - use external site query method
    -w, --webcm    - use webcm CGI handler method [default]
    -?, --help     - print this help message

EDIT:
Bei mir funktioniert es mit dieser Änderung (siehe auch den Patch im Anhang). Ohne Internetanschluss habe ich allerdings nicht getestet.
Code:
echo '<div '$divstyle'><b>Urloader-IP$(lang de:"-Adresse" en:" address"):</b> '$ip_init_address'&nbsp;&nbsp;&nbsp;<b>$(lang de:"Externe IP-Adresse" en:"external IP-address"):</b> '$(/usr/bin/get_ip -d)'</br></div>'
 

Anhänge

  • box_info_ext_ip.jpeg
    box_info_ext_ip.jpeg
    148.7 KB · Aufrufe: 17
  • box_info_ext_ip.patch.txt
    955 Bytes · Aufrufe: 1
Zuletzt bearbeitet:
Der dsld kümmert sich ja auch um NAT und WAN-Verbindung, wenn man kein DSL verwendet, sondern Internet über LAN1 in Verbindung mit NAT.
 
Ich dachte, du kennst dich damit aus, wenn du die IFs schon trennst.
Für meine Belange reicht es - weiß aber nicht, ob meine Tests Dir genügen.

Status ist der, dass ich ein Interface abgetrennt habe und auf diesem ein anderes LAN-Segment betreibe.
Als ich die Geschichte aus dem Wiki nachvollzogen hatte, war es tatsächlich so, dass das abgetrennte Netz keine Verbindung zu den anderen Schnittstellen hatte (fast so wie ich es wollte). Dort hätte ich anfangen müssen Routen hinzuzufügen und dann iptables einzurichten.

Mit trunk ist es so, dass auf der abgetrennten Schnittstelle ein eigenes LAN-Segment läuft, von dort aber Verbindungen zu allen anderen Schnittstellen möglich sind. Hier brauche ich mich um die Routen nicht zu kümmern, sondern nur noch iptables für eine DMZ aufzusetzen.

Die Idee mit dem getrennten WLAN ist an sich nicht ganz verkehrt.
Sach ich doch schon lange.
Für mich ist ipcop ein excellentes Beispiel, was die Konfigurationsmöglichkeiten und Benutzerfreundlichkeit eines Routers anbelangt. *Imho* müsste man "nur" das WebIF von cpmaccfg etwas aufbohren, um das Niveau zu erreichen.

Allerdings weiß ich nicht, ob AVM-Firewall alleine reicht, die beiden Netze miteinender zu verbinden und zu forwarden, oder ob man dafür besser iptables nehmen sollte.
Nach dem, was ich bisher so gelesen habe, reicht AVM-Firewall auf keinen Fall, da dieser nur zwischen der dsl-Schnittstelle und der öffentlichen IP arbeitet.
Für alle anderen Schnittstellen ist iptables erforderlich.
Es gibt allerdings keinen Grund, in "ent-" oder "weder" Kategorien zu denken. Die beiden arbeiten unabhängig von einander und vertragen sich durchaus.

Bei mir funktioniert es mit dieser Änderung
Echt klasse! Du schüttelst mal eben so eine Änderung aus dem Ärmel.
Mein Respekt!

Gruß Gero
 
So, ich habe mich auch mal getraut ;)

Anbei mal ein patch für eine Box-Info Seite mit einer Netzwerk-Info, wie ich sie mir vorstelle.

Gruß Gero

P.S. da ich hierfür nur ifconfig auswerte, sollte es in allen Konstellationen funzen.
 

Anhänge

  • BoxInfo-01.png
    BoxInfo-01.png
    37.9 KB · Aufrufe: 11
  • box_info.patch.tar.gz
    1 KB · Aufrufe: 1
Zuletzt bearbeitet:
Code:
--- box_info.orig.cgi	2010-06-26 05:12:11.000000000 +0200
+++ box_info.cgi	2010-06-26 13:03:18.000000000 +0200
Besser wäre eine Pfadangabe im Patch, so dass man den Patch aus dem "freetz-trunk"-Verzeichnis, mit "patch -p0 < ..." anwenden kann.
 
Sieht gut aus. Aber die externe Adresse ist hier jetzt nicht bei?

MfG Oliver
 
[...]
P.S. da ich hierfür nur ifconfig auswerte, sollte es in allen Konstellationen funzen.
Auch auf den Boxen, die andere interfaces haben als deine Box?
Code:
cpmac0, dsl, eth0, eth0:1, lan, lan:0, lo, tiwlan0, tun1, wan, wdsdw0, wdsdw1, wdsdw2, wdsdw3, wdsup0

Der Patch funktioniert bei mir nicht:
Code:
> patch -p0 < box_info.patch
patching file root/usr/lib/cgi-bin/mod/box_info.cgi
Hunk #2 FAILED at 87.
1 out of 2 hunks FAILED -- saving rejects to file root/usr/lib/cgi-bin/mod/box_info.cgi.rej
 
Besser wäre eine Pfadangabe im Patch
Yo - verzeih, ich bin noch nicht so durchorganisiert wie Du.
Gelobe Besserung.

Aber die externe Adresse ist hier jetzt nicht bei?
Nein, das hatte sf3978 doch getan.

Ich habe nur versucht, ob ich die existierenden Schnittstellen auswerten kann, ohne Annahmen über deren Namen machen zu müssen.
Aber ok, ich werde versuchen, den Patch von sf3978 anzuwenden und dann einen kompletten Patch mit Pfadangaben zu machen.
OK, habe patch in obigem Artikel ausgetauscht.

Der Patch funktioniert bei mir nicht:
Könnte es daran liegen, dass Du schon Deine Änderung mit der externe IP aktiv hast?
Mein Patch ist gegen den trunk 5155 erstellt worden.

Gruß Gero
 
Zuletzt bearbeitet:
Könnte es daran liegen, dass Du schon Deine Änderung mit der externe IP aktiv hast?
Mein Patch ist gegen den trunk 5155 erstellt worden.
Sorry, hast recht. Ich habe zwar versucht meine Änderung rückgängig zu machen. Hat aber irgendwie nicht funktioniert. Mit neu runtergeladener box_info.cgi, funktioniert dein Patch einwandfrei:
Code:
> patch -p0 < box_info.patch
patching file root/usr/lib/cgi-bin/mod/box_info.cgi
 
Auch auf den Boxen, die andere interfaces haben als deine Box?
Damit sollten alle Interfaces angezeigt werden, die eine IP-Adresse haben.

Wenn es einen Hosts-Eintrag gibt für 192.168.178.1 und einen für 192.168.178.10, gibt es vermutlich selsame Effekte.
Hiermit hat man ein besseres Ergbnis, und spart noch einen grep-Prozeß:
Code:
hostname=$(awk -v IP="$addr" '$1 == IP { print $NF; }'  /etc/hosts )
 
Ach Leute, muss es denn awk sein? Ich hatte bis jetzt wo es nur ging versucht awk zu meiden. Denn awk läuft auf der Box sehr, sehr langsam. Meiner Meinung nach ist immer besser sed und grep zu verwenden, anstatt awk. Da wo ich es ersetzt hatte, lief alles meistens deutlich schneller.
@Gero013: Deine Anzeige ist fein, allerdings meiner meinung nach zu kompliziert und zu ausführlich für nicht-Experte. Ich hatte genau so mit den MAC-Adressen angefangen. Zunächst waren es 5 Stück, die tatsächlich auf der Box gab. Leider konnte kein Schwein damit was anfangen. Ergo: Daraus sind drei geworden, deren Namen zwar sehr weit von der AVM-eigenen Benennung liegen, dafür aber die Funktion für "Otto-Normalverbraucher" etwas besser darstellen.

Ich glaube, wir müssen aus den beiden Vorschlägen etwas Gemeinsames bilden. Bei dem Vorschlag von sf3978 gefällt mir die Reihenfolge nicht ganz.

Soll ich mich um die Zusammenführung kümmern und hier was posten, oder wie wollen wir weiter vorgehen? Wenn wir parallel zu dritt oder zuviert hier werkeln, ist es kontraproduktiv.

MfG
 
[...]
Soll ich mich um die Zusammenführung kümmern und hier was posten, oder wie wollen wir weiter vorgehen? Wenn wir parallel zu dritt oder zuviert hier werkeln, ist es kontraproduktiv.
Ja, sehe ich auch so, dass es besser ist wenn Du die Zusammenführung machst.
 
Ach Leute, muss es denn awk sein? Ich hatte bis jetzt wo es nur ging versucht awk zu meiden. Denn awk läuft auf der Box sehr, sehr langsam
Wenn Du die gleiche Ausgabe ohne awk schaffst - warum nicht?
Für meinen Geschmack gibt es andere Seiten (z.B. die Dienste) die viel zeitaufwändiger sind und bei denen es nix zu optimieren gibt. Also ich habe an der Stelle kein Problem mit der Laufzeit.

Was die Informationen anbelangt: Jetzt zeigt Netzwerk-Info auch wirklich Informationen zum Netzwerk an. Wenn es Dir zu überladen ist, könnte man(n) die Ausgabe ja mit security_level verknüpfen, sodass diese Ausgabe nur bei 0 gezeigt wird.

Wenn wir parallel zu dritt oder zuviert hier werkeln, ist es kontraproduktiv.
Du bist mir auch ne Marke!
Erst forderst Du andere wiederholt auf, doch Patches zu entwickeln und wenn dann Patches kommen, dann passt es Dir auch nicht.
Weißt Du eigentlich, was Du willst?

Gruß Gero
 
Die Laufzeiten für den Aufruf von awk liegen auf meiner Box zwischen 0.02 und 0.04 Sekunden, genau wie die Zeiten für einen Aufruf von sed.
Mit grep und sed komme ich auf 0.06 bis 0.08 Sekunden, was nachvollziehbar ist, weil dafür zwei Prozesse gestartet werden müssen.
Wenn Du schon sed verwenden willst, dann besser sed allein:
Code:
sed -ne "/$IP"'[ \t]/s/^.*[ \t]//p' /etc/hosts
Es gibt schon eine andere Funktion für security_level, der sollte nichts mit der Menge an Informationen auf einer Seite zu tun haben.
 
@Gero013: Wenn alle mit deiner Version zufrieden sind, dann lass uns mal sie nehmen. Mir ist es egal. Dann habe ich weniger zu tun. War nur Vorschlag von mir.
Kannst du bitte das aktuellere Bild posten, wie es bei dir denn nun aussieht, als du die Sachen von sf3978 reingenommen hast? Hast du die Vorschläge von Ralf reingenommen? Die letzte sed-Sequenz gefällt mir am besten.

MfG
 
Noch etwas sauberer ist es so, auch wenn ich nicht vermute, daß es in diesem Fall einen praktischen Unterschied macht.
Code:
sed -ne "/${IP//./\\.}"'[ \t]/s/^.*[ \t]//p' /etc/hosts
 
@Ralf: Mit welcher Box hast du deine Zeitmessungen gemacht? Ich hatte früher deutliche Unterschiede bei einer 7170 gesehen.

MfG
 
Hallo,

habe kurzerhand mal ein paar Messungen auf einer 7270 mit folgendem Script gemacht:
Code:
#!/bin/sh
getNetworkInfo() {
ifconfig | grep -A 1 -B 1 "inet addr:" | while read a b c d; do
  if [ "x$b" = "xLink" ]; then
    interface=$a
    itype=${c#encap:}
  elif [ "x$a" = "xinet" ]; then
    addr=${b#addr:}
  elif [ "x$a" = "xUP" ]; then
    hostname=$(awk -v IP="$addr" '$1 == IP { print $NF; }' /etc/hosts)
#    hostname=$(sed -ne "/${IP//./\\.}"'[ \t]/s/^.*[ \t]//p' /etc/hosts)
    echo "$interface $itype $addr $hostname"
  fi
done
}
getNetworkInfo

Ergebnis von jeweils 6 Messungen:
1. mit sed
Code:
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.12s
user    0m 0.07s
sys     0m 0.05s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.08s
sys     0m 0.05s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.14s
user    0m 0.03s
sys     0m 0.09s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.14s
user    0m 0.06s
sys     0m 0.04s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.14s
user    0m 0.08s
sys     0m 0.06s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.14s
user    0m 0.05s
sys     0m 0.07s

2. mit awk
Code:
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.06s
sys     0m 0.06s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.07s
sys     0m 0.06s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.08s
sys     0m 0.05s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.10s
sys     0m 0.04s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.03s
sys     0m 0.10s
/var/mod/root # time ./nwinfo.sh > /dev/null
real    0m 0.13s
user    0m 0.05s
sys     0m 0.08s

Also für mich liegen die Unterschiede im Rahmen des Grundrauschens der Messgenauigkeit.

Gruß Gero
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.