#!/usr/bin/perl

use strict;
use Net::SNMP;
use Getopt::Long;

my %opt;
GetOptions( "host=s" => \$opt{'host'},
				"community=s" => \$opt{'community'},
				"warn=i" => \$opt{'warn'},
				"crit=i" => \$opt{'crit'});

unless ($opt{'host'} && $opt{'community'} && $opt{'warn'} && $opt{'crit'}) {
	print "Usage: $0 --host <hostname> --community <community> --warn <percent> --crit <percent>\n\n";
	exit 3;
}

my($session, $error) = Net::SNMP->session(-hostname => $opt{'host'},
														-community => $opt{'community'} );

unless(defined($session)) {
	print "Critical - Could not establish SNMP session\n";
	exit 2;
}

my $oid_cpu_5sec = '1.3.6.1.4.1.9.2.1.56.0';
my $oid_cpu_1min = '1.3.6.1.4.1.9.2.1.57.0';
my $oid_cpu_5min = '1.3.6.1.4.1.9.2.1.58.0';

my $result = $session->get_request(-varbindlist => [$oid_cpu_5sec,$oid_cpu_1min,$oid_cpu_5min] );

my $cpu_5sec = $result->{$oid_cpu_5sec};
my $cpu_1min = $result->{$oid_cpu_1min};
my $cpu_5min = $result->{$oid_cpu_5min};

$session->close;

print "CPU Utilization 5sec: ".$cpu_5sec."% 1min: ".$cpu_1min."% 5min: ".$cpu_5min."%\n";

exit 2 if $result->{$oid_cpu_5sec} > $opt{'crit'};
exit 1 if $result->{$oid_cpu_5sec} > $opt{'warn'};
exit 0;
