私は、ネットワークを監査するNmapの:: ParserのかをNmap ::スキャナを使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/1515643

  •  19-09-2019
  •  | 
  •  

質問

私は、可能な最速の方法で私の大規模なネットワークの機器を監査したいと思います。 //search.cpan:私は Nmap::Parser のか<のhref = "HTTPを使用する必要があります.ORG / perldocの/ Nmapの::スキャナ」のrel = "nofollowをnoreferrer"> Nmap::Scanner の?

私はpingを実行だけでなく、関連するOSのフットプリントと識別を返すIPアドレスのリストを作成したい。

ping 192.168.*.*
私は成功したのpingを取得するときに

次に、OSが何であるかの推測と一緒にハッシュにIPアドレスを保存

役に立ちましたか?

解決

あなたがNmap::ParserNmap::Scannerを使用するかどうか、あなたは、Nmapのと同じスキャンを実行する必要があるので、2つの間には速度差がありません。

ここでは、ハッシュに結果を格納し、ホストの状態を報告し、彼らが起動している場合は、OSの指紋それらをしようと、あなたが望むものを約ない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;
}

他のヒント

さて、それらの一つは、あなたが既に持っているデータのためのパーサであり、それらの一つは、データを作成するスキャナです。あなたが必要とする仕事をしていずれかを使用します。タスクのどの部分が問題を引き起こしている?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top