サーバーのポートをスキャンしてレポートを生成するスクリプトを作成する必要があります。このスクリプトは次のことを行う必要があります。
ファイルから IP のリストを読み取ります。各 IP をスキャンし、結果をファイルに書き込みます。
これには以下のスクリプトを使用しています::
#!/usr/bin/perl -w
use strict;
use IO::Socket::PortState qw(check_ports);
my $hostfile = 'hosts.txt';
my %port_hash = (
tcp => {
22 => {},
443 => {},
80 => {},
53 => {},
30032 => {},
13720 => {},
13782 => {},
}
);
my $timeout = 5;
open HOSTS, '<', $hostfile or die "Cannot open $hostfile:$!\n";
while (my $host = <HOSTS>) {
chomp($host);
my $host_hr = check_ports($host,$timeout,\%port_hash);
print "Host - $host\n";
for my $port (sort {$a <=> $b} keys %{$host_hr->{tcp}}) {
my $yesno = $host_hr->{tcp}{$port}{open} ? "yes" : "no";
print "$port - $yesno\n";
}
print "\n";
}
close HOSTS;
今、私がやるべきことは1つあります::
開いているすべてのポートをスキャンします。
現在、ポート%port_hashをスキャンしていますが、すべてのポートをスキャンし、開いているポートを一覧表示する必要があります。これを行う方法?