一个进行连续批量的ping操作的脚本

来源:互联网 发布:linux samba安装 编辑:程序博客网 时间:2024/04/19 23:03
#!/usr/bin/perl -w#file: mping.pluse strict;my $msg = <<USAGE;Usage:perl mping.pl 192.168.1.2perl mping.pl 192.168.1.[2,3,4-6]perl mping.pl 202.[38,40].64.(1-255)perl mping.pl 166.111.21.*USAGEdie "$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";}
原创粉丝点击