使用基本模块在perl中获取公共ip

时间:2017-05-16 17:26:06

标签: perl ip public

我的框中配置了两个ips 如果我从另一个盒子中ping每个ips ......一个是ping,另一个没有ping。 我需要正在ping的IP地址

我尝试如下但是它打印不pingable ip

#!/usr/local/bin/perl
use Sys::Hostname;
use Getopt::Std;
use Socket;
sub GetHostAddress
{
  $ip = inet_ntoa(scalar(gethostbyname($_[0])) || 'localhost');
  print $ip;
}

$ip = GetHostAddress($HOSTNAME);

注意::我的盒子刚刚安装了基本的perl ...我不能安装像net这样的新模块...... 有没有办法使用默认perl安装的基本perl模块来获取公共IP

我可以通过循环获得所有ips,如下所示...但我只想要可ping的ips。

#!/usr/local/bin/perl
use Sys::Hostname;
use Getopt::Std;
use Cwd;
use Socket;
($name,$aliases,$addrtype,$length,@addrs) = gethostbyname($name);

foreach my $addr (@addrs) {
    push(@ip, join('.', unpack('C4', $addr)));
}
foreach my $ip (@ip) {
    print $ip, "\n";
}

0 个答案:

没有答案