夏末秋初 发表于 2015-12-26 16:33:31

[原]ping一段网络的perl脚本

  ping是一个很常用的网络检测脚本,比较唯一不足的是一次只能检测一个IP地址。我用perl包装了一下,使得它可以ping一段网络地址:
#! /usr/bin/perl -w
use strict;
die print "usage : range_ping.pl 192.168.1.1 192.168.1.100 \n"
."Powered By killkill \n\n"
if scalar @ARGV != 2 ;
my ( $start_ip , $end_ip ) = @ARGV;
my $start = &ip2int($start_ip);
my $end   = &ip2int($end_ip);
my $i = $start;
for ( $start .. $end )
{
my $ip = &int2ip($_);
my @val = `ping -c1 -W1 $ip;echo \$?`;
if ($val[$#val] == 0 )
{
print " + $ip \n";
}
else
{
print " | $ip \n";
}
}
sub ip2int
{
$_ =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
return (16777216*$1)+(65536*$2)+(256*$3)+$4;
}
sub int2ip
{
return ($_/16777216)%256 . '.' .
($_/65536)%256    . '.' .
($_/256)%256      . '.' .
$_%256;
}
  功能很简单,但是很有用。
页: [1]
查看完整版本: [原]ping一段网络的perl脚本