#! /usr/bin/perl -w

# Check SNMP pour vérifier si un (ou des) process tourne(nt) sur une machine.
# Cette configuration est nécessaire dans le fichier snmpd.conf sur le
# serveur :
# proc nom_du_process

# Pour tester à la main (on teste ici le process d'index 1, le premier
# process configuré dans snmpd.conf. Le 2ème process configuré aura
# l'index 2 etc) :
# snmpget -v1 -Of -c password acct .1.3.6.1.4.1.2021.2.1.100.1
# .iso.org.dod.internet.private.enterprises.ucdavis.prTable.prEntry.prErrorFlag.1 = INTEGER: 0
# Si l'entier retourné est 0, il n'y a pas d'ereur.

use strict;
use SNMP;

my $key		= 'password';


sub usage()
{
	print "Usage: $0 hostname process_index\n";
	exit(3);
}


&usage if (scalar(@ARGV) != 2);

my $server = shift;
my $index = shift;

my $oid = ".1.3.6.1.4.1.2021.2.1.100.$index";

SNMP::initMib();

my $sess = new SNMP::Session(DestHost => $server, Community => $key, UseSprintValue => 1);

if (not defined($sess)) { print "Impossible d'ouvrir une session SNMP avec $server !\n"; exit(3); }

my $r = $sess->get($oid);

if (not defined($r) or $r eq 'NULL' ) { print "Erreur lors du poll SNMP de $server !\n"; exit(3); }

# Ok, plus qu'a émettre le status avec les conventions nagios (code de retour)

print "CRITICAL : process ne tourne plus.\n" if $r;

exit(2) if $r; # CRITICAL
# exit(1); # WARNING

print "OK.\n";
exit(0); # OK

