#!/usr/bin/perl -w
#file: mping.pl
use strict;
my $msg = <<USAGE;
Usage:
perl mping.pl 192.168.1.2
perl mping.pl 192.168.1.[2,3,4-6]
perl mping.pl 202.[38,40].64.(1-255)
perl mping.pl 166.111.21.*
USAGE
die "$msg/n" if scalar(@ARGV)<1;
my @parts = split //./,$ARGV[0];
die "$msg/n" if scalar(@parts)!=4;
my (@ipstr);
&iter_ping;
sub iter_ping
{
my $idx = scalar(@ipstr);
if ($idx == 4)
{
&ping_host;
return;
}
my $strpart = $parts[$idx];
$strpart =~ s//((.*)/)/$1/;
$strpart =~ s//[(.*)/]/$1/;
$strpart =~ s/-/../g;
$strpart = '0..255' if $strpart eq '*';
my @nums;
eval '@nums=('.$strpart.')';
foreach my $num (@nums)
{
push @ipstr,$num;
&iter_ping;
pop @ipstr;
}
}
sub ping_host
{
my $host = join ".",@ipstr;
my $pingstr = "Pinging $host ... ";
print $pingstr;
my @ret = `ping -n 1 $host`;
my $retstr = join '',@ret;
if ($retstr =~ /100%/mi)
{
print "/b" x length($pingstr);
return;
}
print " [ok] ";
@ret = `ping -a -n 1 $host`;
$retstr = join '',@ret;
if ($retstr =~ /Pinging/s+(/S+)/s+/mi)
{
print " name: $1";
}
print "/n";
}
一个进行连续批量的ping操作的脚本
最新推荐文章于 2025-09-17 14:29:13 发布
该博客展示了一个Perl脚本mping.pl,可实现多IP地址的Ping测试。脚本支持多种IP地址输入格式,如192.168.1.2、192.168.1.[2,3,4 - 6]等。通过递归函数生成IP地址并进行Ping操作,输出Ping结果及主机名。
2133

被折叠的 条评论
为什么被折叠?



