#!/usr/bin/perl -w
#
# Copyright (C) 2004 Jimmy Olsen, Dagfinn Ilmari Mannsaaker
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2 dated June,
# 1991.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
#
# $Log$
# Revision 1.7  2004/11/16 20:08:26  jimmyo
# License cleanups.
#
# Revision 1.6  2004/09/08 15:25:33  ilmari
# Use /usr/bin/perl in all perl shebang lines.
#
# Revision 1.5  2004/09/07 13:19:22  ilmari
# SNMP plugins now honour the "host" environment variable if they can't deduce the hostname from zsh.
#
# Revision 1.4  2004/09/05 12:00:18  jimmyo
# Set family and capabilities.
#
# Revision 1.3  2004/09/04 21:58:28  jimmyo
# Set category and info fields.
#
# Revision 1.2  2004/09/03 22:56:51  jimmyo
# Added support for SNMP probing.
#
# Revision 1.1  2004/05/01 10:50:53  jimmyo
# New SNMP plugins users and load.
#
# Revision 1.1  2004/04/30 20:13:53  jimmyo
# New SNMP plugin for number of procs.
#
# Revision 1.1  2004/04/29 22:29:57  jimmyo
# New SNMP plugin for disk usage.
#
# Revision 1.3  2004/02/22 20:17:58  jimmyo
# Typo fix
#
# Revision 1.2  2004/02/18 21:54:56  jimmyo
# Did a bit of work on the snmp-thingie.
#
# Revision 1.1  2004/01/02 18:50:00  jimmyo
# Renamed occurrances of lrrd -> munin
#
# Revision 1.1.1.1  2004/01/02 15:18:07  jimmyo
# Import of LRRD CVS tree after renaming to Munin
#
# Revision 1.1  2003/12/19 20:53:45  jimmyo
# Created by jo
#
#
#%# family=snmpauto
#%# capabilities=snmpconf

use strict;
use Net::SNMP;

my $DEBUG = 0;
my $MAXLABEL = 20;

my $host      = $ENV{host}      || undef;
my $port      = $ENV{port}      || 161;
my $community = $ENV{community} || "public";
my $iface     = $ENV{interface} || undef;

my $response;

if (defined $ARGV[0] and $ARGV[0] eq "snmpconf")
{
	print "require 1.3.6.1.4.1.2021.10.1.3.2 [0-9]\n"; # Number
	exit 0;
}

if ($0 =~ /^(?:|.*\/)snmp_([^_]+)_load$/)
{
	$host  = $1;
	if ($host =~ /^([^:]+):(\d+)$/)
	{
		$host = $1;
		$port = $2;
	}
}
elsif (!defined($host))
{
	print "# Debug: $0 -- $1\n" if $DEBUG;
	die "# Error: couldn't understand what I'm supposed to monitor.";
}

my ($session, $error) = Net::SNMP->session(
		-hostname  => $host,
		-community => $community,
		-port      => $port
	);

if (!defined ($session))
{
	die "Croaking: $error";
}

if (defined $ARGV[0] and $ARGV[0] eq "config")
{
	print "host_name $host\n";
	print "graph_title Load average
graph_args --base 1000 -l 0 
graph_vlabel load
graph_category system
graph_info This graph shows the load average on the host. Load average is a rough way of estimating how hard the machine works. Optimally, a load average should be equal to or lower than the number of CPUs on the machine.
load.label load
load.info The load average itself. This number is an average of the last 5 minutes.
load.draw LINE2
";

	exit 0;
}

print "load.value ", &get_single ($session, "1.3.6.1.4.1.2021.10.1.3.2"), "\n";

sub get_single
{
	my $handle = shift;
	my $oid    = shift;

	print "# Getting single $oid...\n" if $DEBUG;

	$response = $handle->get_request ($oid);

	if (!defined $response->{$oid})
	{
	    return undef;
	}
	else
	{
	    return $response->{$oid};
	}
}

