[RndTbl] determine IP address in linux

Trevor Cordes trevor at tecnopolis.ca
Sun Mar 24 18:06:09 CDT 2013

On 2013-03-23 Sean Walberg wrote:
> my_public_ip=`curl http://ifconfig.me`

Hehe, ya, but won't help me when I have an IP but my internet is down
(dropping packets, or iptables bungled).

On 2013-03-24 Kevin McGregor wrote:
> ifconfig eth0 | grep inet[^6] | awk  -F"[: \t]+" '{print $4}' # Get

Doesn't fit the requirement of not relying on (now proven) changeable
strings ("inet") and position ($4).  :-(

On 2013-03-24 Adam Thompson wrote:
> There is (AFAIK) no generic, portable, standardized solution.

Afraid of that...

> 1. No UNIX system is guaranteed to have networking at all, never mind 
> 2. POSIX doesn't cover networking configuration commands (that I can 
> find, anyway)

Luckily for me I don't care at all about this working on anything other
than Fedora 17 and newer.  The tricky part is I want to work for as
many "newer" Fedoras as possible.  For instance, if there was a /sys
file made by the kernel then there's a good chance Linus would never
let it change.  Whereas userland stuff like "ifconfig" and "ip" seem
mutable at the whims of the authors :-(

Your script is good.  Whittled down to just the case I care about (has
ip command; ipv4 only; etc) it's pretty much what I've already written.

You'd think there'd be some other way though...

> can't do it from shell.  Use 
> AF_NETLINK, which is what ip(8) does internally.  Bad design, IMHO... 

So if I whipped up a little C proggie I could rely on it not to
change?  Hmm, maybe that's the way to go, but then I have to worry
about keeping compiled binaries up to date :-(

Thanks guys!

More information about the Roundtable mailing list