2016-08-02 81 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