2016-08-02 8 views
-1

Ich brauche Hilfe, diesen Code zu modifizieren, um mehrere Bereiche zu scannen. Es ist in Perl, aber ich bin sicher, dass Sie mir helfen können, herauszufinden, wie man es schafft, einen Anfang zu machen und durch alle IPs zwischen diesen 2 Punkten zu scannen. Hier ist der Code:brauche Hilfe, um ein Argument zu setzen

#!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]; 

Ich rate es würde ein 4. Argument benötigen. wie

mein $ extranet = $ ARGV [3];

Bitte helfen.

+1

Bitte [Bearbeiten] Ihre Frage und die richtige Markup-Code zu verwenden. In der [Abmeldehilfe] (http://stackoverflow.com/help/formatting) finden Sie Einzelheiten dazu. Bitte markieren Sie Code-Blöcke und Inline-Code entsprechend. Es ist sehr schwierig, Ihre Frage sofort zu lesen. – simbabque

+1

Ich habe versucht, Ihre Frage besser selbst zu formatieren, aber ich kann nicht an mehreren Stellen Ihrer Bedeutung sicher sein. Bitte repariere es. – Borodin

+0

können Sie die Bedeutung von ** multi-fähigen Bereichen ** definieren. Ich kenne die Bedeutung nicht. – Arijit

Antwort

-2

-Code

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"; 
       } 


     } 
} 

Der obige Code wird Ihre BaseNet, start_host und end_host Daten und erzeugt eine IP basierend auf diesem iputs verarbeiten und überprüft dann die IP aktiv ist oder nicht.

Ausgang (läuft mit: 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 

Hope this helfen Ihnen

+0

Vielen Dank !! Dies wird für 1 Bereich funktionieren .. können Sie helfen und es für mehrere Bereiche machen ... zum Beispiel 192.168.1.1-192.168.2.254? danke nochmal! perl.pl 192.168.1 1 254 2 Dies sollte prüfen, ob ip 1-254 aktiv ist und die letzte Zahl für die Basis ist. die Basis war 1, also 1 + 1 = 2 .. bitte helfe dabei. Vielen Dank! – Mike

+0

können Sie insgesamt 5 Argumente wie 'perl.pl 192.168. 1 254 1 2 "die letzten beiden Argumente für den 3. Platz des UZ. Es wird viel einfacher – Arijit

+0

können Sie mir ein Beispiel dafür zeigen? oder wie wäre die Syntax? – Mike

Verwandte Themen