[原]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 { $_[0] =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/; return (16777216*$1)+(65536*$2)+(256*$3)+$4; } sub int2ip { return ($_[0]/16777216)%256 . '.' . ($_[0]/65536)%256 . '.' . ($_[0]/256)%256 . '.' . $_[0]%256; }
功能很简单,但是很有用。