#!/usr/bin/perl
use strict;
use Net::Ping;
use Net::Telnet ();
use Getopt::Long;
use IPC::Open2;
#
# Check if a Bacula client is alive. By Phil Stracchino.
#
# Return values:
# -1 Program error or no host specified
# 0 Success, FD found and responding
# 1 Client alive but FD not listening
# 2 Client not found on network
my $ret = -1;
my ($host, $p, $ret, $verbose);
GetOptions('verbose' => \$verbose,
'v' => \$verbose);
$host = shift || die "No host specified!\n";
$p = Net::Ping->new();
if ($p->ping($host))
{
print "Host $host is alive\n" if ($verbose);
my $t = new Net::Telnet (Timeout => 10,
Port => 9102,
Prompt => '/bash\$ $/');
if ($t->open($host))
{
print "Bacula-FD listening on port 9102\n" if ($verbose);
$ret = 0;
}
else
{
print "Bacula-FD not found\n" if ($verbose);
$ret = 1;
}
$t->close;
}
else
{
print "$host is unreachable\n" if ($verbose);
$ret = 2;
}
$p->close();
print "Returning value $ret\n" if ($verbose);
exit ($ret);
syntax highlighted by Code2HTML, v. 0.9.1