NAME
Sys::HostAddr - Get IP address information about this host
SYNOPSIS
use Sys::HostAddr;
my $sysaddr = Sys::HostAddr->new();
my $string = $sysaddr->public();
my $aref = $sysaddr->interfaces();
my $aref = $sysaddr->addresses();
my $href = $sysaddr->ip();
my $ip = $sysaddr->first_ip();
my $main = $sysaddr->main_ip();
DESCRIPTION
Sys::HostAddr
provides methods for determining IP address information about a local host.
CONSTRUCTOR
my $sysaddr = Sys::HostAddr->new( debug => [0|1],
ipv => [4|6],
interface => 'ethX',
);
- debug
-
debug
will control ancillary/informational messages being printed. - ipv
-
ipv
will limit response data to either IPv4 or IPv6 addresses. Default: IPv4 - interface
-
interface
limits response data to a particular interface, where applicable. This value is overriden if a method is given an interface argument directly.
USAGE
- public()
-
public
will attempt to find the public ip address of your machine. usefull if you're behind some NAT. Sends an automation request to the folks at www.whatismyip.com. Works on IPv4 only. - main_ip( [$method] )
-
main_ip
will attempt to find the "main" or "primary" IP address of the machine. method can be: auto (default), preferred (MSWin32/cygwin only), route, or dns. - first_ip( [$interface] )
-
first_ip
will return the first ip address on a given interface (if provided), or the first ip address returned by ifconfig (that is not localhost). - ip( [$interface] )
-
ip
will return a hash reference containing ipaddress/netmask information keyed by interface. if $interface is provded, will be limited to that interface, otherwise will include all interfaces - addresses( [$interface] )
-
addresses
will return an array reference of all ip addresses found. if $interface is provided, will be limited to that interface. - interfaces()
-
interfaces
will return an array reference of all interfaces found.
EXAMPLES
use Sys::HostAddr;
my $sysaddr = Sys::HostAddr->new();
my $int_aref = $sysaddr->interfaces();
foreach my $interface ( @{$int_aref} ){
print "found $interface\n";
}
my $addr_aref = $sysaddr->addresses();
foreach my $address ( @{$addr_aref} ){
print "found $address\n";
}
my $href = $sysaddr->ip();
foreach my $interface ( keys %{$href} ){
print "$interface has: ";
foreach my $aref ( @{$href->{$interface}} ){
print " $aref->{addr} $aref->{netmask}\n";
}
}
my $ip = $sysaddr->first_ip();
print "$ip found as the first ip address\n";
my $main = $sysaddr->main_ip();
print "$main appears to be the main ip address of this machine\n";
my $pub = $sysaddr->public();
print "public addr appears to be $pub\n";
CAVEATS
- Win32 lightly tested with Strawberry Perl 5.10.1 on Windows7
- Win32 lacks some options, like per interface specification
- Win32 lacks some features, like timeouts during lookups
- Cygwin not tested at all, should work as well as MSWin32
- IPv6 support not well tested.
RESTRICTIONS
AUTHOR
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 462:
You forgot a '=back' before '=head1'