The perl code below uses nmap (through the wonderful Nmap::Scanner module) and Text::CSV_XS -- though Text::CSV will work if you modify the import line:
use strict; use warnings; use diagnostics;
use Getopt::Long;
use Nmap::Scanner;
use Text::CSV_XS;
my $host = 'hasan.d8u.us';
GetOptions ('host=s' => \$host) or $host = 'hasan.d8u.us';
my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 });
my $last = 'up';
my $scanner = new Nmap::Scanner;
$scanner->register_port_found_event(\&host_found);
$scanner->register_no_ports_open_event(\&host_found);
do {
$scanner->scan("-p 22 --system-dns -Pn $host");
sleep 30;
} while 1;
sub host_found {
my $self = shift;
my $host = shift;
my $port = shift;
my $time = time();
if ($host->status ne $last) {
$csv->say($time, $host->status);
$last = $host->status;
}
}
No comments:
Post a Comment