Here is something i am playing with/testing:
snmpd.local.conf
Code:
pass .1.3.6.1.2.1.100.1 snmptest.pl .1.3.6.1.2.1.100.1
snmptest.pl
Code:
#! /usr/bin/perl -W
if ( @ARGV < 3 ) {
print <<EOF
usage: snmptest.pl <base oid> <request type> <requested oid>
where:
<base oid> The base OID this script is mounted on.
<request type> -n for SNMP getNext, or -g for SNMP get.
<request oid> Requested OID, in accordance with previous parameter
EOF
;
exit;
}
$baseOid = $ARGV[0];
$reqMethod = $ARGV[1];
$reqOid = $ARGV[2];
@listuser = `/app/sparc/ud61/bin/listuser`;
$phantoms = 0;
$udtprocs = 0;
$udtload = 0;
foreach $line (@listuser) {
if ($line =~ /^\s+(\d+) \/ \d+\s+\d+\s+\d+\s+\d+\s+\d+$/) {
$maxlicense = $1;
} elsif ($line =~
/^\s+\d+\s+(\d+)\s+\d+\s+\S+\s+(\S+)\s+\S+\s+\d{2}:\d{2}:\d{2} \S{3} \d{2}
\d{4}$/) {
$procid = $1;
$udtype = $2;
@procinfo = `/usr/ucb/ps aux $procid`;
if ($procinfo[1] =~ /^\S+\s+\d+\s+(\S+)/) {
$procload = $1;
$udtload = $udtload + ($procload * 10);
}
if ($udtype eq 'phantom') {
$phantoms++;
} elsif ($udtype eq 'udt') {
$udtprocs++;
}
}
}
$udtpwght = ($udtprocs / $maxlicense) * 100;
use POSIX;
$udtpwght = floor($udtpwght);
if ( $reqMethod eq "-n" ) {
# SNMP getNext request.
if ( $reqOid eq $baseOid ) {
print $baseOid.".0\ninteger\n".$maxlicense."\n";
} elsif ( $reqOid eq $baseOid.".0" ) {
print $baseOid.".1\ninteger\n".$udtprocs."\n";
} elsif ( $reqOid eq $baseOid.".1" ) {
print $baseOid.".2\ninteger\n".$phantoms."\n";
} elsif ( $reqOid eq $baseOid.".2" ) {
print $baseOid.".3\ninteger\n".$udtload."\n";
} elsif ( $reqOid eq $baseOid.".3" ) {
print $baseOid.".4\ninteger\n".$udtpwght."\n";
}
} elsif ( $reqMethod eq "-g" ) {
# SNMP get request.
if ( $reqOid eq $baseOid || $reqOid eq $baseOid.".0" ) {
print $baseOid.".0\ninteger\n".$maxlicense."\n";
} elsif( $reqOid eq $baseOid.".1" ) {
print $baseOid.".1\ninteger\n".$udtprocs."\n";
} elsif( $reqOid eq $baseOid.".2" ) {
print $baseOid.".2\ninteger\n".$phantoms."\n";
} elsif( $reqOid eq $baseOid.".3" ) {
print $baseOid.".3\ninteger\n".$udtload."\n";
} elsif( $reqOid eq $baseOid.".4" ) {
print $baseOid.".4\ninteger\n".$udtpwght."\n";
}
}
------------------------
Kyle Goedtel
-------------------- m2f --------------------
Read this topic online here:
http://community.zenoss.com/forums/viewtopic.php?p=11632#11632
-------------------- m2f --------------------
_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users