Soll ich Nmap :: Parser oder Nmap :: Scanner verwenden, um ein Netzwerk zu überwachen?
-
19-09-2019 - |
Frage
Ich möchte die Ausrüstung meines großen Netzwerkes auf dem schnellsten Weg möglich prüfen. Sollte ich Nmap::Parser
oder Nmap::Scanner
?
Ich mag eine Liste von IP-Adressen erstellen, die einen Ping sowie eine zugehörige OS-Fußabdruck und Identifizierung zurück.
Beispiel: :
ping 192.168.*.*
Dann, wenn ich einen erfolgreichen Ping erhalten, speichern Sie die IP-Adresse in einem Hash zusammen mit einer Vermutung, was das Betriebssystem
Lösung
Ob Sie Nmap::Parser
oder Nmap::Scanner
, Sie haben die gleiche Scan mit Nmap laufen, so gibt es keine Geschwindigkeitsdifferenz zwischen den beiden.
Hier ist ein Beispiel Nmap::Scanner
mit denen etwa dem tut, was Sie wollen, um den Status des Hosts Reporting und versucht, OS Fingerabdruck sie, wenn sie nach oben, um die Ergebnisse in einem Hash zu speichern. Sie sollten sie erweitern können je nach Bedarf.
#!/usr/bin/perl
use strict;
use warnings;
use Nmap::Scanner;
my %network_status;
my $scanner = new Nmap::Scanner;
$scanner->register_scan_complete_event(\&scan_completed);
$scanner->guess_os();
$scanner->scan('-O 192.168.*.*');
foreach my $host ( keys %network_status ) {
print "$host => $network_status{$host}\n";
}
sub scan_completed {
my $self = shift;
my $host = shift;
my $hostname = $host->hostname();
my $addresses = join(',', map {$_->addr()} $host->addresses());
my $status = $host->status();
print "$hostname ($addresses) is $status ";
my $os_name = 'unknown OS';
if ( $status eq 'up' ) {
if ( $host->os() && $host->os()->osmatches() ) {
my ($os_type) = $host->os()->osmatches();
$os_name = $os_type->name();
}
print "($os_name)";
}
print "\n";
$network_status{$addresses} = $os_name;
}
Andere Tipps
Nun, einer von denen ist ein Parser für Daten, die Sie bereits haben, und einer von denen ist ein Scanner, der Daten erstellt. Verwenden Sie die eine, die die Arbeit erledigt, die Sie benötigen. Welcher Teil der Aufgabe wird das Problem verursacht?