Schnittstellen IP ermitteln per skript

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Jelzin
Beiträge: 332
Registriert: 17.02.2007 12:52:37

Schnittstellen IP ermitteln per skript

Beitrag von Jelzin » 28.12.2007 17:24:52

Tag zusammen,

kennt jemand ein Skript, das die IP von Schnittstellen wie ppp0 ermitteln kann?

Das selbst zu programmieren, indem auf eine http-Ressource zugegriffen wird, kann ich selbst. Ich hätte die IP aber gerne vom lokalen Rechner aus ermittelt.

Gruß!

Jelzin

samweis2111
Beiträge: 100
Registriert: 17.12.2007 11:44:18
Wohnort: SWEDEN

Beitrag von samweis2111 » 28.12.2007 17:35:45

Hallo,

ich bin ja nicht der Script-Papst, aber meinst Du so etwas:

Code: Alles auswählen

ifconfig ppp0 | grep Adresse | awk '{ print  $2 }'
?

Gruß

Oliver

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 28.12.2007 17:42:02

Nein, er meint sowas:

Code: Alles auswählen

ifconfig ppp0 | grep "inet Adresse" | cut -d ":" -f2 | cut -d " " -f1
Und wenn man dann doch von außen ran will, macht man das so:

Code: Alles auswählen

lynx --dump www.wieistmeineip.de | grep "^[0-9]"
:-P

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von GoKi » 28.12.2007 17:52:07

jhr-online hat geschrieben:Nein, er meint sowas:

Code: Alles auswählen

ifconfig ppp0 | grep "inet Adresse" | cut -d ":" -f2 | cut -d " " -f1
Alle hier mit deutscher locale unterwegs :o
MfG GoKi
:wq

Jelzin
Beiträge: 332
Registriert: 17.02.2007 12:52:37

Beitrag von Jelzin » 28.12.2007 17:58:28

jhr-online hat geschrieben:Nein, er meint sowas:

Code: Alles auswählen

ifconfig ppp0 | grep "inet Adresse" | cut -d ":" -f2 | cut -d " " -f1
Dankeeeee! Das war's :) Volltreffer!

/Edit: Jetzt steh ich vor dem nächsten Problem. Wie kann ich die Ausgabe in eine Variable umleiten?

Code: Alles auswählen

IP=ifconfig ppp0 | grep "inet Adresse" | cut -d ":" -f2 | cut -d " " 
und dann

Code: Alles auswählen

echo $IP
funktioniert leider nicht :cry:
Zuletzt geändert von Jelzin am 28.12.2007 18:06:11, insgesamt 1-mal geändert.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.12.2007 18:01:44

Ja sicher ;-)

Code: Alles auswählen

daniel@daniel-laptop:~$ ifconfig eth2
eth2      Protokoll:Ethernet  Hardware Adresse 00:0E:35:5C:F4:BF
          inet Adresse:192.168.1.30  Bcast:192.168.1.255  Maske:255.255.255.0
          inet6 Adresse: fe80::20e:35ff:fe5c:f4bf/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3345 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2694 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:1924992 (1.8 MiB)  TX bytes:431801 (421.6 KiB)
          Interrupt:4 Basisadresse:0x4000 Speicher:ff9ee000-ff9eefff
Oh, yeah!

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 28.12.2007 18:10:08

Mit Backticks...

Code: Alles auswählen

IP=`ifconfig eth2 | grep "inet Adresse" | cut -d ":" -f2 | cut -d " " -f1`; echo $IP
jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.12.2007 18:26:24

Soll immer die IP von einer bestimmten Schnittstelle selektiert werden oder von allen?
Oh, yeah!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 28.12.2007 19:14:23

...auch wenn der Teil schon gelöst ist, mag ich awk viel lieber als cut:

Code: Alles auswählen

/sbin/ifconfig ppp0 | awk -F ":|B" '/inet .*B/ {print$2}'
Gruß fuzzy

Jelzin
Beiträge: 332
Registriert: 17.02.2007 12:52:37

Beitrag von Jelzin » 28.12.2007 19:28:19

Duff hat geschrieben:Soll immer die IP von einer bestimmten Schnittstelle selektiert werden oder von allen?
Von einer einzigen langt mir ;) Danke für die vielen hilfreichen Antworten!!

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 28.12.2007 19:36:14

Ich würde übrigens die awk-Variante von fuzzy nehmen. Ich hab eben mal getestet. Die läuft in etwas über der Häfte der Zeit wie meine Version.

Viel Spaß damit!

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.12.2007 19:45:24

Würde dass Ganze zwar auch mit awk lösen, aber wie hast du die angeblichen Zeitunterschiede gemessen?
Habe es mal mit einem date vor und nach dem Aufruf probiert, aber es kommt alles innerhalb einer Sekunde zurück.
Oh, yeah!

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von GoKi » 28.12.2007 19:51:42

Messen kann man mittels

Code: Alles auswählen

time <befehl>
MfG GoKi
:wq

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 28.12.2007 19:55:45

Und um was aussagekräftiges zu bekommen, hab ich das in ein Script gepackt:

Code: Alles auswählen

for i in `seq 1 10000`;
do
        ifconfig...
done
Das mit

Code: Alles auswählen

time ./script
aufgerufen, braucht der eine etwa 50 Sekunden, der andere 29. Und wer's nachmacht, lacht mich gleich aus, weil sein PC das in 10 Sekunden schafft :)

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.12.2007 19:59:14

Stimmt, mit konnte man sowas machen. Wäre ich aber nicht mehr drauf gekommen.
Danke.

...vielleicht gibt es ja noch ne schnellere Variante ;-)
Oh, yeah!

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Beitrag von 123456 » 28.12.2007 20:03:58

Duff hat geschrieben:...vielleicht gibt es ja noch ne schnellere Variante ;-)
Klar, du vergibst dir ne statische IP - die weisst du dann gleich. ;)

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 28.12.2007 20:09:55

Stimmt, dass geht noch schneller ;-)

Code: Alles auswählen

daniel@daniel-laptop:~$ export IP=192.168.1.30
daniel@daniel-laptop:~$ echo $IP
192.168.1.30
daniel@daniel-laptop:~$ time echo $IP
192.168.1.30

real    0m0.000s
user    0m0.000s
sys     0m0.000s
daniel@daniel-laptop:~$
...aber habe irgendwie noch Probleme dass Ganze mit sed zu lösen. Irgendwie scheint mein Ausdruck nicht zu stimmen, da immer alles von ifconfig zurück kommt (oder perl)...
Oh, yeah!

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 28.12.2007 20:43:55

Duff hat geschrieben: ...aber habe irgendwie noch Probleme dass Ganze mit sed zu lösen. Irgendwie scheint mein Ausdruck nicht zu stimmen, da immer alles von ifconfig zurück kommt (oder perl)...

Code: Alles auswählen

/sbin/ifconfig ppp0 | sed -n '/inet [aA]/s/[^:]*:\(.*\)B.*/\1/p'

Code: Alles auswählen

/sbin/ifconfig ppp0 | sed '/inet .*B/!d;s/[^:]*://;s/B.*//'
Gruß fuzzy

Antworten