我想以最快的方式审核我的大型网络设备。我应该使用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