Revision: 38180
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 28, 2010 09:45 by eno
Initial Code
#!/usr/bin/perl use strict; use warnings; use Socket; require 'sys/ioctl.ph'; print get_interface_address('eth0'); sub get_interface_address { my ($iface) = @_; my $socket; socket($socket, PF_INET, SOCK_STREAM, (getprotobyname('tcp'))[2]) || die "unable to create a socket: $!\n"; my $buf = pack('a256', $iface); if (ioctl($socket, SIOCGIFADDR(), $buf) && (my @address = unpack('x20 C4', $buf))) { return join('.', @address); } return undef; }
Initial URL
Initial Description
This method doesn't rely on parsing 'ifconfig' tool output, and should work in any Linux distribution, but also could work in other POSIX environments. The function returns a string with IPv4 address or 'undef' if it's not possible.
Initial Title
the most reliable and correct method to get network interface address in Linux using Perl
Initial Tags
Initial Language
Perl