Perlでnmapを利用したプログラムを書きたくなったので調度良さそうなライブラリを探していたところNmap::Scannerというものを見つけた。
# cpan install Nmap::Scanner
と実行したところエラーが発生した。原因はClass::Generateがインストールできないかららしい。
面倒なことにClass::Generateの現行バージョンはPerl 5.10以上でなければならないらしい。
そこでバージョンを探してみた結果、Class::Generate 1.09があったためこちらを指定してインストールした。
cpan> install S/SW/SWARTIK/Class-Generate-1.09.tar.gz
その後、Nmap::Scannerをもう一度インストールしてみたところ問題なくインストールできた。
まともなサンプルコードも少ないので載せておく。
#!/usr/bin/perl
use Nmap::Scanner;
my $scan = Nmap::Scanner->new();
$scan->add_target('localhost');
my $results = $scan->scan();
my $hosts = $results->get_host_list();
while (my $host = $hosts->get_next()) {
my $hostname = $host->hostname();
my $addresses = join(',', map {$_->addr()} $host->addresses());
print "Check Host " . $hostname . "\n";
print "Check Adrr " . $addresses . "\n";
my $ports = $host->get_port_list();
while (my $port = $ports->get_next()) {
my $service = $port->service();
print join(' ',
'Port',
$port->protocol() . '/' . $port->portid(),
'Service',
$service->name(),
'is in state',
$port->state(),
"\n"
);
}
}
0 Comments.