[BACK]Return to check_jabber_login.pl CVS log [TXT][DIR] Up to [local] / nagios / check_jabber_login

File: [local] / nagios / check_jabber_login / check_jabber_login.pl (download)

Revision 1.1, Tue Feb 16 16:47:13 2010 UTC (14 years, 2 months ago) by andrew
Branch: MAIN
CVS Tags: HEAD

add some more checks to CVS, not important checks, but they should be here anyway

#!/usr/bin/perl -w
use strict;
use warnings;
use lib "/usr/local/libexec/nagios/";
use utils qw($TIMEOUT %ERRORS &print_revision &support);
use Getopt::Long;
use Net::Jabber;

my (
    $opt_version, $opt_help,  $opt_port, $opt_host,
    $opt_verbose, $opt_uname, $opt_pass, $opt_ssl,
);

my $state    = 'UNKNOWN';
my $PROGNAME = "check_jabber_login";
sub print_help ();
sub print_usage ();

%ENV = ();

Getopt::Long::Configure('bundling');
GetOptions(
    "V|version"    => \$opt_version,
    "h|help"       => \$opt_help,
    "v|verbose+"   => \$opt_verbose,
    "H|hostname=s" => \$opt_host,
    "P|port=i"     => \$opt_port,
    "s|ssl"        => \$opt_ssl,
    "u|username=s" => \$opt_uname,
    "p|password=s" => \$opt_pass
);

$opt_port ||= 5222;

# -h means display verbose help screen
if ($opt_help) { print_usage(); exit $ERRORS{'OK'}; }

# -V means display version number
if ($opt_version) {
    print_revision( $PROGNAME, '$Revision: 1.1 $ ' );
    exit $ERRORS{'OK'};
}

if ( !$opt_host || !$opt_port || !$opt_uname || !$opt_pass ) {
    print_usage();
    exit $ERRORS{'UNKNOWN'};
}

if ( !utils::is_hostname($opt_host) ) {
    print "$opt_host is not a valid host name\n";
    print_usage();
    exit $ERRORS{"UNKNOWN"};
}
$SIG{'ALRM'} = sub {
    print("ERROR: No response from server (alarm)\n");
    exit $ERRORS{"UNKNOWN"};
};
alarm($TIMEOUT);

checklogin();

sub checklogin {
    my $jabbercm     = $opt_host;
    my $jabbercmport = $opt_port;
    my $username     = $opt_uname;
    my $password     = $opt_pass;
    my $is_ssl       = 0;
    my $debug        = 0;
    $is_ssl = '1' if defined $opt_ssl;
    $debug  = '2' if defined $opt_verbose;

    my $ocon = new Net::Jabber::Client( 
        debuglevel => $debug, 
        file       => 'stdout' 
    );
    if ( !$ocon->Connect( 
            'hostname' => $jabbercm, 
            'port' => $jabbercmport 
        ) 
    ) {
        print "CRITICAL: Connection error $jabbercm:$jabbercmport\n";
        exit $ERRORS{'CRITICAL'};
    }

    my @resp = $ocon->AuthSend(
        username => $username,
        password => $password,
        resource => 'Nagios',
        tls      => $is_ssl
    );
    if ( $resp[0] ne "ok" ) {
        print "WARNING: Login error for $username\n";
        exit $ERRORS{'WARNING'};
    }
	$ocon->Disconnect();

    print "OK: Login for $username successful\n";
    exit $ERRORS{'OK'};
}

sub print_usage () {
    print "Usage: \n";
    print " $PROGNAME -H host -P port -u username -p password [-s] [--ssl]\n";
    print " $PROGNAME [-h | --help]\n";
    print " $PROGNAME [-V | --version]\n";
}