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/;
}
####
for ('ship.cfg') {
# ...
}
####
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;
}
####
#!/usr/bin/perl
use strict;
use warnings;
use Net::Ping;
use CGI qw/:standard/;
my @hosts= -e 'ship.cfg' ? do {
open my $cfgfile, '<', 'ship.cfg'
or die $!;
map {chomp; $_ } <$cfgfile>;
} : qw/host1 host2 host3/; # defaults
my (@up, @down);
my $p=Net::Ping->new('udp');
push @{ $p->ping($_) ? \@up : \@down }, $_ for @hosts;
$p->close();
print header, start_html,
start_form, submit 'Refresh';
my @verbage=qw/are hosts are hosts/;
@verbage[0,1]=qw/is host/ if @up == 1;
@verbage[2,3]=qw/is host/ if @down == 1;
print p, "There $verbage[2] ",
(scalar @down),
" $verbage[3] down" unless @down;
print p, "There $verbage[0] ",
(scalar @up),
" $verbage[1] alive" unless @up;
if (@up) {
print p, "The following $verbage[1] $verbage[0] alive:\n", br;
print li($_) for sort @up;
}
if (@down) {
print p, "The following $verbage[3] $verbage[2] down:\n", br;
print li($_) for sort @down;
}
__END__