2016-08-02 84 views
-1

我需要帮助修改此代码来扫描多重范围。它在perl中,但是我相信你可以帮助我弄清楚如何让它开始并结束并扫描这两点之间的所有IP。这里是代码:需要帮助来设置参数

#!C:\Program Files\perl\bin\Perl.exe -w 


# ------------------------------------------------------------ # 
use Net::Ping; 
use LWP::UserAgent; 

# ------------------------------------------------------------ # 
# my $basenet = "192.168.240";         # 
# my $start_host = 1;           # 
# my $end_host = 25;           # 
# ------------------------------------------------------------ # 
$num_args = $#ARGV + 1; 
if ($num_args != 3) { 
    print "Usage: perl.pl [network-base] [start_ip] [end_ip]\n\n"; 
    print "Example: perl.pl 192.168.1 20 44\n"; 
    print "This will run the check on these IP's: 192.168.1.20-44.\n"; 
    exit -1; 
} 

my $basenet=$ARGV[0]; 
my $start_host=$ARGV[1]; 
my $end_host=$ARGV[2]; 

我猜测它需要第四个参数。像

my $ extranet = $ ARGV [3];

请帮忙。

+1

请[编辑]你的问题,用正确的标记代码。请参阅[markdown help](http://stackoverflow.com/help/formatting)了解有关这些工作原理的详细信息。请适当标记代码块和内联代码。现在很难阅读你的问题。 – simbabque

+1

我试图更好地设置自己的问题的格式,但我无法确定你在几个地方的含义。请修复它。 – Borodin

+0

你能定义**多重范围**的含义吗?我不知道意思。 – Arijit

回答

-2

代码

use strict; 
use warnings; 

use Net::Ping; 
use LWP::UserAgent; 
my $num_args = $#ARGV + 1; 
if ($num_args != 5) { 
    print "Usage: perl.pl [network-base] [start_ip] [end_ip] [range_start] [range_end]\n\n"; 
    print "Example: perl.pl 192.168 20 30 1 2\n"; 
    print "This will run the check on these IP's: 192.168.1.20- 192.168.2.30.\n"; 
    exit -1; 
} 

my $basenet=$ARGV[0]; 
my $start_host=$ARGV[1]; 
my $end_host=$ARGV[2]; 
my $range_start =$ARGV[3]; 
my $range_end = $ARGV[4]; 

for(my $j =$range_start; $j<= $range_end ;$j++) 
{ 
     for(my $i =$start_host; $i<= $end_host ;$i++) 
     { 
       my $new_ip = "$basenet.$j.$i"; 
       print "$new_ip\n"; 

       my $p = Net::Ping->new(); 
       if ($p->ping($new_ip)) { 
         print "$new_ip : active\n"; 
       } 
       else{ 
         print "$new_ip : inactive\n"; 
       } 


     } 
} 

上面的代码将处理您basenet,start_host和end_host数据并基于那些iputs一个IP,然后检查IP是活动的。

输出(运行使用:perl abc.pl 192.168 20 30 1 2

192.168.1.20 : inactive 
192.168.1.21 : inactive 
192.168.1.22 : inactive 
192.168.1.23 : inactive 
192.168.1.24 : inactive 
192.168.1.25 : inactive 
192.168.1.26 : inactive 
192.168.1.27 : inactive 
192.168.1.28 : inactive 
192.168.1.29 : inactive 
192.168.1.30 : inactive 
192.168.2.20 : inactive 
192.168.2.21 : inactive 
192.168.2.22 : inactive 
192.168.2.23 : inactive 
192.168.2.24 : inactive 
192.168.2.25 : inactive 
192.168.2.26 : inactive 
192.168.2.27 : inactive 
192.168.2.28 : inactive 
192.168.2.29 : inactive 
192.168.2.30 : inactive 

希望这将帮助你

+0

非常感谢!这将工作在1范围..你可以帮助,并使其在几个范围...例如192.168.1.1-192.168.2.254? 再次感谢你! perl.pl 192.168.1 1 254 2 这应该检查ip的1-254是否有效,最后一个数字是否为基数上升。基地是1所以1 + 1 = 2 ..请帮助这一点。谢谢! – Mike

+0

你可以总共有5个参数,例如'perl.pl 192.168。 1 254 1 2'为IP的第三位的最后两个参数。这将是更容易 – Arijit

+0

你能告诉我一个例子吗?或者语法如何? – Mike