我想以最快的方式審覈我的大型網絡設備。我應該使用Nmap::Parser
還是Nmap::Scanner
?我應該使用Nmap :: Parser還是Nmap :: Scanner來審計網絡?
我想要創建一個IP地址列表,以返回一個ping以及相關的OS佔用空間和標識。
例:
ping 192.168.*.*
然後,當我得到一個成功的ping,在哈希存儲的IP地址用的操作系統是什麼
我想以最快的方式審覈我的大型網絡設備。我應該使用Nmap::Parser
還是Nmap::Scanner
?我應該使用Nmap :: Parser還是Nmap :: Scanner來審計網絡?
我想要創建一個IP地址列表,以返回一個ping以及相關的OS佔用空間和標識。
例:
ping 192.168.*.*
然後,當我得到一個成功的ping,在哈希存儲的IP地址用的操作系統是什麼
無論您使用Nmap::Parser
還是Nmap::Scanner
,都必須使用Nmap運行相同的掃描,因此兩者之間沒有速度差異。
下面是一個使用Nmap::Scanner
的示例,它可以大致滿足您的需求,報告主機的狀態,並在操作系統啓動時嘗試操作系統指紋,並將結果存儲在散列中。你應該能夠根據需要擴展它。
#!/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;
}
好了,其中之一是一個猜測沿您已擁有數據的解析器,其中一個是創建數據的掃描器。使用做你需要的工作的人。哪部分任務導致了問題?
我對模塊的無知是什麼導致了問題。 :-)我想使用Nmap來發現我的可發現設備,然後將網絡元素插入到隊列中。一旦完成,我希望使用SNMP,TL1等進行更嚴格的調查。謝謝! – EhevuTov 2009-10-05 04:11:51
感謝您的示例代碼...我開始看到我可能想要使用Nmap :: Scanner。如果我的發現過程需要增長,我可以看到如何使用異步和IPC(使用不同的發現機器進行解耦)更容易一些。一個網絡是我可能試圖發現的10 *。*。*或256^3 IP地址。 – EhevuTov 2009-10-05 04:16:19