Должен ли я использовать Nmap::Parser или Nmap::Scanner для аудита сети?
Я хотел бы провести аудит оборудования моей большой сети как можно быстрее. Должен ли я использовать Nmap::Parser
или Nmap::Scanner
?
Я хочу создать список IP-адресов, которые возвращают ping, а также связанный с ним след ОС и идентификацию.
Пример :
ping 192.168.*.*
Затем, когда я получаю успешный пинг, храните IP-адрес в хэше вместе с предположением о том, что такое ОС
2 ответа:
Независимо от того, используете ли вы
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; }