我想以最快的方式审核我的大型网络的设备。我应该使用 Nmap::Parser 或者 Nmap::Scanner?

我想创建一个返回 ping 以及相关操作系统占用空间和标识的 IP 地址列表。

例子:

ping 192.168.*.*

然后,当我成功 ping 时,将 IP 地址存储在哈希值中,并猜测操作系统是什么

有帮助吗?

解决方案

无论使用Nmap::ParserNmap::Scanner,必须运行与Nmap的相同的扫描,所以两者之间没有速度差。

下面是一个使用Nmap::Scanner这不约你想要什么,报告主机的状态,并试图OS指纹他们,如果他们都在涨,存储在哈希结果的例子。根据需要,你应该能够延长它。

#!/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;
}

其他提示

好了,其中之一是你已经有数据分析器,以及其中之一是创建数据的扫描仪。使用确实是你所需要的工作之一。该任务的一部分是造成问题?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top