A script for continuous batch ping operation

xiaoxiao2021-03-06  76

#! / usr / bin / perl -w

#file: MPINPL

Use strict;

MY $ msg = << usage;

USAGE:

Perl MPING.PL 192.168.1.2

Perl MPINPING.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/1;

$ strpart = ~ s //[ (.* )/]/ $ 1/1/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";

}

转载请注明原文地址:https://www.9cbs.com/read-93260.html

New Post(0)