use strict; use warnings; use Net::Ping; use CGI qw/:standard/; my @hosts; if ( -e "ship.cfg" ) { open (CFGFILE, "ship.cfg") || die; @hosts=; close (CFGFILE); } else { # Enter your hosts here... @hosts = qw/host1 host2 host3/; } my @uphosts=(); my @downhosts=(); my $proto; my @verbage=("are", "hosts", "are", "hosts"); my $p = Net::Ping->new('udp'); foreach my $host(@hosts) { chomp($host); if ($p->ping($host)) { push (@uphosts, $host); } else { push (@downhosts, $host); } } $p->close(); print start_html,br; print header,br; print start_form,br; print submit('Refresh'),p; if (scalar(@downhosts) == 1 ) { $verbage[2]="is"; $verbage[3]="host" } if (scalar(@uphosts) == 1 ) { $verbage[0]="is"; $verbage[1]="host"; } unless (scalar(@downhosts) == 0) { print p,"There $verbage[2] ",scalar(@downhosts)," $verbage[3] down",br } print "There $verbage[0] ",scalar(@uphosts)," $verbage[1] alive",br; print p,"The following $verbage[1] $verbage[0] alive: \n",br; foreach my $uitem (sort @uphosts) { print li("$uitem"),br; } unless (scalar(@downhosts) == 0) { print p,"The following $verbage[3] $verbage[2] down: ",br } foreach my $ditem (sort @downhosts) { print li("$ditem"),br; }