Hallo zusammen, derzeit lese ich die IP vom Output von /sbin/ifconfig. Gibt es eine einfachere Moeglichkeit ohne aufwendiges String-Gewusel? In /proc habe ich die IP nicht gefunden. Schonmal Danke! PS.: fpc / lazarus MfG Th. Moritz -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hallo, Am Mon, 21 Jun 2010, Thomas Moritz schrieb:
derzeit lese ich die IP vom Output von /sbin/ifconfig. Gibt es eine einfachere Moeglichkeit ohne aufwendiges String-Gewusel?
Was ist an ==== #!/bin/sh IF="${1:-eth0}"; LANG="C" /sbin/ifconfig "$IF" | sed -n '/addr:/s/.*addr:\([0-9\.]*\).*/\1/p'; ==== aufwendiges Stringgewusel? Die Ausgabe von 'ip addr show' ist jedenfalls nicht einfacher zu parsen. Alternativ (v.a. hinter nem Router): GET checkip.dyndns.org | sed 's/.*: *\([0-9.]*\)[ <].*/\1/' curl http://checkip.dyndns.org | sed 's/.*: *\([0-9.]*\)[ <].*/\1/' wget -q -O - http://checkip.dyndns.org | sed 's/.*: *\([0-9.]*\)[ <].*/\1/' Achso, in /proc/ scheint's nicht zu sein, ifconfig liest die IP via ioctl aus. Auf die Schnelle bekomm ich das in C auch nicht hin. HTH, -dnh -- ... at least I thought I was dancing, 'til somebody stepped on my hand. -- J. B. White -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
aufwendiges Stringgewusel? Die Ausgabe von 'ip addr show' ist jedenfalls nicht einfacher zu parsen.
*husthust* # ip addr show eth0 | sed -n '/inet/s/.*inet\s\([0-9\.]*\).*/\1/p'; ;-) -- Gruß Sebastian - openSUSE Member (Freespacer) http://de.opensuse.org/Benutzer:Freespacer Wichtiger Hinweis zur openSUSE Mailing Liste: http://de.opensuse.org/OpenSUSE_Mailinglisten-Netiquette -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hallo, Am Die, 22 Jun 2010, Sebastian Siebert schrieb:
aufwendiges Stringgewusel? Die Ausgabe von 'ip addr show' ist jedenfalls nicht einfacher zu parsen.
*husthust*
# ip addr show eth0 | sed -n '/inet/s/.*inet\s\([0-9\.]*\).*/\1/p';
;-)
Definitiv schon mal "nicht einfacher". Und, aber und überhaupt, v.a.:
(mein GNU sed kann kein '\s', "nur" [[:space:]]):
# ip addr show eth0 | sed -n '/inet/s/.*inet[[:space:]]\+\([0-9\.]*\).*/\1/p'
10.0.0.1
192.168.178.11
Ja, und welche IP gehört jetzt zu eth0 und welche zu eth0:1? Oder zu
was?
# ip addr show eth0:1 | sed -n '/inet/s/.*inet[[:space:]]\+\([0-9\.]*\).*/\1/p'
Device "eth0:1" does not exist.
Das ist schlicht flasch! Denn:
# ip addr show eth0 | grep 'inet\|eth0'
2: eth0:
Am Dienstag, 22. Juni 2010 01:26:56 schrieb Sebastian Siebert: Hallo Sebastian,
aufwendiges Stringgewusel? Die Ausgabe von 'ip addr show' ist jedenfalls nicht einfacher zu parsen.
*husthust*
# ip addr show eth0 | sed -n '/inet/s/.*inet\s\([0-9\.]*\).*/\1/p';
oder: ip -4 -o addr show wlan0 | awk -F"[/, ]" '{print $7 }' Das ist unter Linux-Bordmitteln alles klar! Ich dachte nur, die IP steht irgendwo im System als String, den ich nur nicht finde... MfG Th. Moritz -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Dienstag, 22. Juni 2010 00:56:51 schrieb David Haller: Hallo David,
Am Mon, 21 Jun 2010, Thomas Moritz schrieb:
derzeit lese ich die IP vom Output von /sbin/ifconfig. Gibt es eine einfachere Moeglichkeit ohne aufwendiges String-Gewusel?
Was ist an
==== #!/bin/sh IF="${1:-eth0}"; LANG="C" /sbin/ifconfig "$IF" | sed -n '/addr:/s/.*addr:\([0-9\.]*\).*/\1/p'; ====
aufwendiges Stringgewusel? Die Ausgabe von 'ip addr show' ist jedenfalls nicht einfacher zu parsen.
Das wollte ich wissen. Ich hatte lediglich vermutet, dass die IP irgendwo als einfacher String steht - ich es nur nicht finde!
Alternativ (v.a. hinter nem Router):
GET checkip.dyndns.org | sed 's/.*: *\([0-9.]*\)[ <].*/\1/' curl http://checkip.dyndns.org | sed 's/.*: *\([0-9.]*\)[ <].*/\1/' wget -q -O - http://checkip.dyndns.org | sed 's/.*: *\([0-9.]*\)[ <].*/\1/'
Unter Linux-Bordmitteln ist mir das alles klar. Ich muss aber mit Pascal (fpc /lazarus) auslesen. Hier reicht es, wenn ich ifconfig und route ueber TProcess einbinde. Da moechte ich nicht noch ein sed oder awk mit reinziehen.
Achso, in /proc/ scheint's nicht zu sein, ifconfig liest die IP via ioctl aus. Auf die Schnelle bekomm ich das in C auch nicht hin.
Schade, dass in proc wirklich nichts steht. Also lasse ich meine Abfrage ueber ifconfig so wie sie ist. Ich hoffte, es ginge einfacher. MfG Th. Moritz -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
participants (3)
-
David Haller
-
Sebastian Siebert
-
Thomas Moritz