Hallo Experten, Wie frage ich in einem Script die dynamische IP-Adresse meines Providers ab ? MYIP=`/sbin/ifconfig ippp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1` - funktioniert so hier nicht. (habe ich von http://home.arcor.de/thomas.litsch/s-ipput.htm) Das System ist ein Suse 8.2 an einem TDSL-Anschluss. Danke schon vorab 8-)
* Andrea postete am 22. Mar. 2004 folgendes:
MYIP=`/sbin/ifconfig ippp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1` - funktioniert so hier nicht. (habe ich von http://home.arcor.de/thomas.litsch/s-ipput.htm)
Das System ist ein Suse 8.2 an einem TDSL-Anschluss.
DSL hat schonmal ppp0 und nicht ippp0. Wie sieht denn die Ausgabe von ifconfig aus, wenn Du dieses mal aufrufst? Bei mir sieht das so aus: ppp0 Protokoll:Punkt-zu-Punkt Verbindung inet Adresse:217.173.146.23 P-z-P:217.173.128.54 Maske:255.255.255.255 UP PUNKTZUPUNKT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:55960 errors:0 dropped:0 overruns:0 frame:0 TX packets:58912 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:3 RX bytes:31467595 (30.0 Mb) TX bytes:6574739 (6.2 Mb) Und da da nicht P-t-P steht, sondern P-z-P steht, müsstest Du die Zeile dementsprechend korrigieren. Also MYIP=`/sbin/ifconfig ppp0 | grep P-z-P | cut -d: -f2 | cut -d" " -f1` Bye Michael -- Es gibt zwei Dinge, die ein Bundy nicht tut: Wir essen kein Gemüse und wir klopfen nicht an. -- Al Bundy _______________________________________________________________________ http://macbyte.info/ ICQ #151172379 http://autohbci.macbyte.info/
Hallo, Am Mon, 22 Mar 2004, Michael Raab schrieb:
* Andrea postete am 22. Mar. 2004 folgendes:
MYIP=`/sbin/ifconfig ippp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1` - funktioniert so hier nicht. (habe ich von http://home.arcor.de/thomas.litsch/s-ipput.htm)
Das System ist ein Suse 8.2 an einem TDSL-Anschluss.
DSL hat schonmal ppp0 und nicht ippp0. Wie sieht denn die Ausgabe von ifconfig aus, wenn Du dieses mal aufrufst?
Bei mir sieht das so aus: ppp0 Protokoll:Punkt-zu-Punkt Verbindung inet Adresse:217.173.146.23 P-z-P:217.173.128.54 [..] Und da da nicht P-t-P steht, sondern P-z-P steht, müsstest Du die Zeile dementsprechend korrigieren.
Also MYIP=`/sbin/ifconfig ppp0 | grep P-z-P | cut -d: -f2 | cut -d" " -f1`
*grrr* MYIP="`LANG='C' /sbin/ifconfig ppp0 | sed -n 's/.*P-t-P:\([^ ]*\).*/\1/p'`" -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Hi! Andrea schrieb:
Hallo Experten, Wie frage ich in einem Script die dynamische IP-Adresse meines Providers ab ?
MYIP=`/sbin/ifconfig ippp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1` - funktioniert so hier nicht. (habe ich von http://home.arcor.de/thomas.litsch/s-ipput.htm)
Das System ist ein Suse 8.2 an einem TDSL-Anschluss.
Um zu klären, das ippp0 ein ISDN Interface ist, Du aber nach DSL (sprich PPPoE) suchst, das imho ppp0 o.ä. heisst, braucht es noch keinen Experten... http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=linux+ip+tdsl+auslesen&meta= aus dem zweiten Ergebnis: /sbin/ifconfig ppp0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://' > /tmp/ip-nr Viel Spaß, Uli
Hallo, Am Mon, 22 Mar 2004, Ulrich Klenk schrieb: [..]
/sbin/ifconfig ppp0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://' > /tmp/ip-nr
*UARGH* grep | awk, grep | sed, sed | awk und awk | sed Pipes sind _IMMER_ ueberfluessig! -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Sorry! David Haller schrieb:
Hallo,
Am Mon, 22 Mar 2004, Ulrich Klenk schrieb: [..]
/sbin/ifconfig ppp0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://' > /tmp/ip-nr
*UARGH* grep | awk, grep | sed, sed | awk und awk | sed Pipes sind _IMMER_ ueberfluessig!
-dnh
Nach dem "useless use of cat"-Award wollte ich den "useless use of pipes"-Award starten :-)) Und genaugenommen war der obige Code-Auszug nur eine Demonstration, das die http://allwissende.muellhal.de/ eine schnelle Lösung gebracht hätte... wenn es auch wie bei Linux üblich viele schöne und schönere Lösungen gibt... siehe http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=linux+ip+tdsl+auslesen&meta= Gruß, Uli
Hallo, Am Mon, 22 Mar 2004, Ulrich Klenk schrieb:
David Haller schrieb:
Am Mon, 22 Mar 2004, Ulrich Klenk schrieb:
/sbin/ifconfig ppp0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://' > /tmp/ip-nr
*UARGH* grep | awk, grep | sed, sed | awk und awk | sed Pipes sind _IMMER_ ueberfluessig!
Nach dem "useless use of cat"-Award wollte ich den "useless use of pipes"-Award starten :-))
Nein, das Problem sind nicht die Pipes, sondern dass man Tools verwendet, die "Obermengen" der Tools davor oder dahinter sind. Grob gesagt gilt eben (fast immer, siehe den Kommentar "awk must be good for something" in einer der perl-manpages): {grep,cut} < sed < awk < perl d.h. sobald auch nur *ein* sed auftaucht sind _alle_ grep und cut komplett durch _ein_ sed ersetzbar. Analoges gilt, wenn ein "awk" auftaucht fuer grep, cut und sed. Und erst Recht bei perl. Beispiele, warum und wie o.g. Pipekonstruktion durch sed oder awk ersetzt werden kann hab ich ja nebenan gemailt. Und Sachen wie sed | sed, sed | awk, awk | perl (usw.) sind natuerlich besonders sinnfrei. Dass man, wenn man "einmalig" was im Terminal bastelt, sowas wie oben zusammenflickt, das ist verstaendlich und ok, das mache ich auch (manchmal, immer weniger), aber man sollte *wissen, dass* man grad was umstaendliches / unsauberes macht. Auf das Wissen um diese Tatsache kommt es mir an. Und daraus folgt IMO, dass man solche "unsauberen" Sachen (ich nenne es gerne auch mal "Unfug") nicht oeffentlich weiterverbreiten sollte. Denn sonst landet das dann eben in Archiven und solche Unsaeglichkeiten sind dann kaum mehr auszurotten, weil sie eben staendig von $suchmaschine gefunden werden und weiterverbreitet werden. Was meine ~/.bash_history (teils komplexeren) Wahnsinnskonstrukten birgt ist nicht mehr feierlich -- aber die bleiben auch nur dort. Was ich also eigentlich sagen wollte, ist, dass _immer_ wenn man die tools wie oben fashlc verwendet, dann sollte im Hinterkopf ein Warnlicht angehen, dass man grad was "faslch" macht... Und wenn man dann z.B. hier ne Antwort schreibt, dann sollte man das Warnlicht beachten und zusaetzlich noch ne Warnsirene angehen... Aehm, "faslsch" meint hier jeweils sowas wie: "Hey! Das geht doch alles komplett mit {sed,awk,perl}, wieso dann noch das grep/cut vorher/nachher? (bzw. skaliert nach o.g. "Reihenfolge" der Tools).
Und genaugenommen war der obige Code-Auszug nur eine Demonstration, das die http://allwissende.muellhal.de/ eine schnelle Lösung gebracht hätte... wenn es auch wie bei Linux üblich viele schöne und schönere Lösungen gibt...
For every complex problem, there is a solution that is simple, neat, and wrong. -- H. L. Mencken
siehe http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=linux+ip+tdsl+auslesen&meta=
s.o. Eben deswegen will man solchen Unfug wie o.g. grep | sed | cut nicht. Aber, sei getroestet, es wurden hier gerade zu dieser Frage (naja, zur eigenen IP, "inet addr") auch noch viel schlimmere Konstrukte (z.B. mit einer 'grep | awk | cut | perl' Kombination *schauder*) gemailt... Achso, das alles ist nicht persoenlich gemeint. Aber gerade eine IP aus der Ausgabe von ifconfig herauszusuchen ist ein so haeufiges und gutes Beispiel wie man es nicht machen sollte... Da konnte ich nicht anders... -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
David Haller, Dienstag, 23. März 2004 00:59:
{grep,cut} < sed < awk < perl
Also ich verstehe das richtig, daß man *alles*, was man mit sed machen kann, auch mit awk hinbekommen kann? -- Mails an diese Adresse werden in /dev/null archiviert! Bitte ggf. lists... durch mail... ersetzen. Andreas Feile www.feile.net
Hallo, Am Tue, 23 Mar 2004, Andreas Feile schrieb:
David Haller, Dienstag, 23. März 2004 00:59:
{grep,cut} < sed < awk < perl
Also ich verstehe das richtig, daß man *alles*, was man mit sed machen kann, auch mit awk hinbekommen kann?
Jup. Zumindest ist mir, glaube ich, noch kein Beispiel ueber den Weg gelaufen, wo das nicht mit awk gegangen waere, wobei es des oefteren sicher einfacher mit sed ist (z.B. r datei). Andererseits kenne ich Beispiele, die mit awk, aber nicht mit sed loesbar waren. Es mag allerdings Ausnahmen geben, so wie awk zumindest eine Sache kann die perl nicht kann: ==== man perlvar ==== Remember: the value of $/ is a string, not a regex. awk has to be better for something. :-) ==== -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Hallo Andrea, On Mon, Mar 22, 2004 at 04:40:07PM +0100, Andrea wrote:
Hallo Experten,
?? wo ??
MYIP=`/sbin/ifconfig ippp0 | grep P-t-P | cut -d: -f2 | cut -d" " -f1` - ^ DSL?^ ...^ ...^ ???^
könnte von mir sein *eg*
funktioniert so hier nicht.
klar :) lesen verstehen ändern. Vorne anfangen und dann immer eine Pipe (|) weiter hangeln.
Das System ist ein Suse 8.2 an einem TDSL-Anschluss. ^^^^ --> ppp0 IIRC damit du nicht traurig bist :) ifconfig ppp0 | awk '/((I|i)net)|INET)/ {print $2}' | cut -d ":" -f 2
Erm David,Jan & Co fällt euch noch was zu dem unschönen cut ein :) Gibt aber noch irgend 'ne Umgebungsvariable in der die IP sowieso schon steht IIRC. Greetings Daniel -- (me) Master of none servant to Many
Hallo, Am Mon, 22 Mar 2004, Daniel Lord schrieb:
ifconfig ppp0 | awk '/((I|i)net)|INET)/ {print $2}' | cut -d ":" -f 2
Erm David,Jan & Co fällt euch noch was zu dem unschönen cut ein :)
Jo, mit awk geht's auch: LANG=C /sbin/ifconfig ppp0 | awk -F: '/P-t-P/{print gensub(" .*","",0,$3);}' Oder auch LANG=C /sbin/ifconfig ppp0 | awk '/P-t-P/{print gensub("^[^:]*:","",0,$3);}' und u.U. LANG=C /sbin/ifconfig ppp0 | awk '/P-t-P/{print gensub(".*:","",0,$3);}' Die Variante mit sed steht nebenan. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
participants (6)
-
Andrea
-
Andreas Feile
-
Daniel Lord
-
David Haller
-
Michael Raab
-
Ulrich Klenk