PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Euer kürzestes Skript zum Auslesen der IP-Adresse?



hiTCH-HiKER
30.11.04, 22:45
Kennt ihr ein möglichst kurzes Skript zum Auslesen der IP-Adresse mit Unix-Standardprogrammen?

Hab mir gestern mal das zusammengebastelt:
ifconfig|awk '/z-/{sub(/:/," ");print$3}'
Das macht 41 Zeichen Länge!

Ein Bekannter schafft es noch ein Zeichen kürzer, allerdings mit Perl, was ja nicht unbedingt auf jeder Kiste vorhanden ist ;)

Würde mich interessieren, welche Wege es noch gibt aus der ifconfig-Ausgabe die IP-Adresse zu schneiden mit <41 Zeichen Länge.
Alternative Methoden wären auch interessant, solange sie nicht auf eine bestimmte Distribution beschränkt sind.

Nachtrag:
Wenn euer Linux die ifconfig-Ausgabe nicht auf Deutsch vornimmt, dann müsst ihr evtl. das Suchmuster vom awk (z-) entsprechend anpassen...

Tomek
30.11.04, 22:54
Naja, ich würde sagen, es kommt eher auf die Anzahl der aufgerufenen Binaries an und nicht auf die Anzahl der Zeichen, wenn man unbedingt sehr effizient vorgehen will.

hiTCH-HiKER
30.11.04, 23:02
Es soll ja nicht effizient sein, sondern möglichst kurz :)
Vielleicht auch noch lesbar, da dürfte meins recht gut sein... bei der Länge kann man mit Ruby noch tricksen, denn da ist der print-Befehl mit einem Buchstaben abkürzbar...

tictactux
01.12.04, 03:04
:)36:) sind zu unterbieten
... wenn die IP-Adresse in CIDR-Notation akzeptiert wird


ip a s eth0|egrep -o '[0-9.]{8,}/24'

Mit einem egrep mit funktionierendem -P (perl-regexp, leider bei Debian
deaktiviert) würde (?=/) statt obige /24 die reine IP liefern
(und das wären 38 Zeichen :p )

cu Wolfgang

[LX]
01.12.04, 05:13
Das erste und das letzte kombiniert kommt man auf

ip a|awk '/pee/{print$2}'

Macht 25 Zeichen ;)

Spiff
01.12.04, 11:14
Warum tun es die awk-Lösungen bei mir nicht? Ich bekomme leere Ausgaben.



$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan

compiled limits:
max NF 32767
sprintf buffer 1020


Liegt's am mawk?

tictactux
01.12.04, 13:58
']ip a|awk '/pee/{print$2}'
Macht 25 Zeichen ;)
/pee/ kommt in meiner Ausgabe von 'ip a' leider nicht vor, und das ist
ip -V : "ip utility, iproute2-ss010824".
Liefert Deine Lösung bei Dir eine einzige IP ? :confused:

[LX]
01.12.04, 15:35
/pee/ kommt in meiner Ausgabe von 'ip a' leider nicht vor, und das ist
ip -V : "ip utility, iproute2-ss010824".
Liefert Deine Lösung bei Dir eine einzige IP ? :confused:
ip (dieselbe Version BTW) gibt bei mir auf Englisch aus:


root@hermes:~# ip a
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:30:84:3f:51:8a brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0
inet6 fe80::230:84ff:fe3f:518a/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:80:29:64:e8:df brd ff:ff:ff:ff:ff:ff
inet6 fe80::280:29ff:fe64:e8df/64 scope link
valid_lft forever preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
788: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc cbq qlen 3
link/ppp
inet 82.82.70.106 peer 82.82.64.1/32 scope global ppp0

ppp0 ist auch die einzige Verbindung, bei der was vom "peer" steht.

Mir fällt gerade auf, dass
ip a|awk '/ee/{print$2}'
in diesem Fall auch ausreicht, macht noch ein Zeichen weniger *g


spiff:
mawk habe ich auch dieselbe Version. Eventuell erfolgen aber die Ausgaben der vorherigen Befehle in einer anderen Sprache bei dir, dann musst du den awk-Teil natürlich anpassen, um den betreffenden Teil rauszufiltern.

tictactux
01.12.04, 16:02
']ppp0 ist auch die einzige Verbindung, bei der was vom "peer" steht.

Das klärt einiges. Ich benutze kein ppp (sondern Router), Spiff wohl auch nicht.
Also leider keine universelle Lösung (aber nett :) )

Spiff
01.12.04, 16:43
Das klärt einiges. Ich benutze kein ppp (sondern Router), Spiff wohl auch nicht.
Also leider keine universelle Lösung (aber nett :) )
Jepp, so ist es. Ich habe gar kein /peer/ drin stehen.

Hätte ich auch geich drauf kommen können :(

hiTCH-HiKER
01.12.04, 18:30
cool.........

core
02.12.04, 10:37
Länger, aber egal was für eine Verbindungsart:
:ugly::ugly:

echo `lynx --dump http://ipid.shat.net/iponly/`

Roger Wilco
02.12.04, 17:15
Länger, aber egal was für eine Verbindungsart:
:ugly::ugly:

echo `lynx --dump http://ipid.shat.net/iponly/`
...und der "Useless use of echo"-Award geht heute an...na? An wen wohl? ;)

Pixelbrei
02.12.04, 18:33
(entfernt)

tictactux
02.12.04, 19:55
Will jetzt net extra w3m installieren, um dessen Optionen nachzugucken, aber vielleicht sind die auch kürzer als -dump
;)
Hättste machen sollen. Auf Verdacht posten gilt nicht ;)
w3m mußt Du bei -dump das meilenlange "-T text/html" mitgeben.

Abgesehen davon sollten wir villeicht von 'externen' Lösungen absehen,
zugunsten universeller Verwendbarkeit.
Vielleicht interessiert ja die IP-Adresse eines bestimmten Interfaces,
das zufällig nicht nach außen geht ?
just my 2¢

[LX]
02.12.04, 20:21
Hättste machen sollen. Auf Verdacht posten gilt nicht ;)
w3m mußt Du bei -dump das meilenlange "-T text/html" mitgeben.Tut bei mir auch ohne... aber auch 'ne interessante Möglichkeit, auf die wär ich net gekommen :D