[Chicago-talk] Any handy operators for finding the local IP?
Steven Lembark
lembark at wrkhors.com
Tue Mar 22 20:36:17 PST 2005
-- Richard Reina <richard at rushlogistics.com>
> I know there's a handy $< to find the UID of the user
> executing the prorgram. Is there any handy operator
> to find the IP address of the local machine that is
> running the program.
If you know the interface name it's not at all difficult
to parse ifconfig's output:
x qx(/sbin/ifconfig eth0) =~ /inet addr:(\S+)/
0 '192.168.1.2'
If you're writing local code then the interface name
is a reasonable guess. For the general case you can
use:
DB<5> x ( $a = qx( /sbin/ifconfig ) ) =~ /inet addr:(\S+)/g
0 '192.168.1.2'
1 '192.168.15.2'
2 '127.0.0.1'
And pick the one that seems most useful (e.g. the
lowest subnet).
If all of your hosts are singly-homed (which the example
above is NOT) then filtering out 127.0.0.1 works. In most
cases you know the subnet you're ineterested in and can
search for that:
DB<6> x ( $a = qx( /sbin/ifconfig ) ) =~ /inet addr:(192.168.\S+)/g
0 '192.168.1.2'
1 '192.168.15.2'
Which would give you a single value on most systems (this
was run in perl -d on a basion host with DMZ and LAN interfaces).
--
Steven Lembark 85-09 90th Street
Workhorse Computing Woodhaven, NY 11421
lembark at wrkhors.com 1 888 359 3508
More information about the Chicago-talk
mailing list