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

Reply via email to