#!/usr/bin/perl

use SNMP;

#$host = '172.25.5.50';
#$community = 'Netcentrics';
$snmpget="/usr/bin/snmpget";
($host, $community) = @ARGV;

sub died() {
	`$snmpget -v1 -c $community $host .1.3.6.1.2.1.1.1.0 >/dev/null 2>&1`;
        if( $? != 0 ) {
                print "CRITICAL - SNMP nao habilitado\n";
                exit(2);
        }
        `$snmpget -v1 -c $community $host .1.3.6.1.4.1.674.10893.1.20.3.0 >/dev/null 2>&1`;
        if( $? != 0 ) {
                print "CRITICAL - Impossivel encontrar OIDs OpenManager\n";
                exit(2);
        }

}

sub main() {


	# Define the array following the MIB specification:
	@statesName = ( "Unknow", "Other", "Unknow", "OK"  , "Non Critical Upper"  , "Critical Upper", "Non Recoverable Upper", "Non Critical Lower", "Critical Lower", "Non Recoverable Lower", "Failed" );

	@fixedArrayStates = (3,3,3,3,3);

	$snmpSession = SNMP::Session->new( DestHost => "$host",
					   Community => "$community",
					   Version => 1 );

        $snmpSession->get(".1.3.6.1.4.1.674.10892.1.100.4.0") or die &died;


	my $i = 1;
	my $error = 0;
	while($error == 0) {

		my $val =  $snmpSession->get(".1.3.6.1.4.1.674.10892.1.700.20.1.5.1.$i");

		if ($val ne "") {
			push(@arrayTempState, $snmpSession->get(".1.3.6.1.4.1.674.10892.1.700.20.1.5.1.$i"));
			push(@arrayTempName, $snmpSession->get(".1.3.6.1.4.1.674.10892.1.700.20.1.8.1.$i"));
			push(@arrayTempC, $snmpSession->get(".1.3.6.1.4.1.674.10892.1.700.20.1.6.1.$i"));
		} else {
			$error = 1;
		}

		$i++;

	}

	$critical = 0;
	$i=0;	
	foreach $state (@arrayTempState) {
		if($state != $fixedArrayStates[$i]) {
			$critical = 1;
		}
		$i++
	}

	print "Temperaturas -> ";
	$perfparse = '';
	for($i=0; $i<=$#arrayTempState; $i++) {
		$realTemperature = ($arrayTempC[$i])/10;
		print " $arrayTempName[$i]($realTemperature C) = $statesName[$arrayTempState[$i]]   "; 
		$perfparse .= "'" . ($arrayTempName[$i]) . "'" . "=$realTemperature\C;;;; ";
	}

	# Print performance data
	print "|$perfparse";

	#foreach $state (@arrayDiskState) {
	#	print " Disk$i = $statesName[$state]   ";
	#	$i++;
	#}
	print "\n";	

	if($critical == 1) {
		return 2;	
	}else{
		return 0;
	}


}

exit(&main());
