On 2013-03-23 Sean Walberg wrote:
my_public_ip=`curl http://ifconfig.me%60
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...
- No UNIX system is guaranteed to have networking at all, never mind
TCP/IP. 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!