Re: lokale IP auslesen

Thomas Moritz <[email protected]> Tue, 22 Jun 2010 07:05:45 +0200
Newsgroups gmane.linux.suse.programming
Organization -
Message-ID <[email protected]>
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