#!/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操作的脚本
最新推荐文章于 2024-07-25 15:23:33 发布