From: <dba...@us...> - 2009-09-11 07:52:01
|
Revision: 148 http://devmon.svn.sourceforge.net/devmon/?rev=148&view=rev Author: dbaldwin Date: 2009-09-11 07:51:41 +0000 (Fri, 11 Sep 2009) Log Message: ----------- add templatebuilder.pl to extras with README Added Paths: ----------- trunk/extras/templatebuilder.README trunk/extras/templatebuilder.pl Added: trunk/extras/templatebuilder.README =================================================================== --- trunk/extras/templatebuilder.README (rev 0) +++ trunk/extras/templatebuilder.README 2009-09-11 07:51:41 UTC (rev 148) @@ -0,0 +1,154 @@ +To run: +./templatebuilder.pl [snmpargs...] <host> <oid> +e.g. +./templatebuilder.pl -cpublic -v2c localhost enterprises + +* runs snmpwalk over the MIB tree (needs MIB files installed) +* translates symbolic and numeric correspondences +* displays values found from host MIB agent +* generates barebones of oids, transforms and thresholds. + +A work in progress... + +$ ./templatebuilder.pl localhost ifTable +snmpwalk -OE localhost ifTable +ifIndex : .1.3.6.1.2.1.2.2.1.1 : branch +RFC1213-MIB::ifIndex.1 (.1.3.6.1.2.1.2.2.1.1.1) = INTEGER: 1 +RFC1213-MIB::ifIndex.2 (.1.3.6.1.2.1.2.2.1.1.2) = INTEGER: 2 +RFC1213-MIB::ifIndex.3 (.1.3.6.1.2.1.2.2.1.1.3) = INTEGER: 3 +RFC1213-MIB::ifIndex.4 (.1.3.6.1.2.1.2.2.1.1.4) = INTEGER: 4 +ifDescr : .1.3.6.1.2.1.2.2.1.2 : branch +RFC1213-MIB::ifDescr.1 (.1.3.6.1.2.1.2.2.1.2.1) = STRING: "lo" +RFC1213-MIB::ifDescr.2 (.1.3.6.1.2.1.2.2.1.2.2) = STRING: "eth0" +RFC1213-MIB::ifDescr.3 (.1.3.6.1.2.1.2.2.1.2.3) = STRING: "eth1" +RFC1213-MIB::ifDescr.4 (.1.3.6.1.2.1.2.2.1.2.4) = STRING: "sit0" +ifType : .1.3.6.1.2.1.2.2.1.3 : branch + ## Values: other(1), regular1822(2), hdh1822(3), ddn-x25(4), rfc877-x25(5), ethernet-csmacd(6), iso88023-csmacd(7), iso88024-tokenBus(8), iso88025-tokenRing(9), iso88026-ma +n(10), starLan(11), proteon-10Mbit(12), proteon-80Mbit(13), hyperchannel(14), fddi(15), lapb(16), sdlc(17), ds1(18), e1(19), basicISDN(20), primaryISDN(21), propPointToPoint +Serial(22), ppp(23), softwareLoopback(24), eon(25), ethernet-3Mbit(26), nsip(27), slip(28), ultra(29), ds3(30), sip(31), frame-relay(32) +ifTypeTxt : SWITCH : {ifType} 1=other,2=regular1822,3=hdh1822,4=ddn-x25,5=rfc877-x25,6=ethernet-csmacd,7=iso88023-csmacd,8=iso88024-tokenBus,9=iso88025-tokenRin +g,10=iso88026-man,11=starLan,12=proteon-10Mbit,13=proteon-80Mbit,14=hyperchannel,15=fddi,16=lapb,17=sdlc,18=ds1,19=e1,20=basicISDN,21=primaryISDN,22=propPointToPointSerial,2 +3=ppp,24=softwareLoopback,25=eon,26=ethernet-3Mbit,27=nsip,28=slip,29=ultra,30=ds3,31=sip,32=frame-relay +RFC1213-MIB::ifType.1 (.1.3.6.1.2.1.2.2.1.3.1) = INTEGER: softwareLoopback(24) +RFC1213-MIB::ifType.2 (.1.3.6.1.2.1.2.2.1.3.2) = INTEGER: ethernet-csmacd(6) +RFC1213-MIB::ifType.3 (.1.3.6.1.2.1.2.2.1.3.3) = INTEGER: ethernet-csmacd(6) +RFC1213-MIB::ifType.4 (.1.3.6.1.2.1.2.2.1.3.4) = INTEGER: 131 +ifMtu : .1.3.6.1.2.1.2.2.1.4 : branch +RFC1213-MIB::ifMtu.1 (.1.3.6.1.2.1.2.2.1.4.1) = INTEGER: 16436 +RFC1213-MIB::ifMtu.2 (.1.3.6.1.2.1.2.2.1.4.2) = INTEGER: 1500 +RFC1213-MIB::ifMtu.3 (.1.3.6.1.2.1.2.2.1.4.3) = INTEGER: 1500 +RFC1213-MIB::ifMtu.4 (.1.3.6.1.2.1.2.2.1.4.4) = INTEGER: 1480 +ifSpeed : .1.3.6.1.2.1.2.2.1.5 : branch +RFC1213-MIB::ifSpeed.1 (.1.3.6.1.2.1.2.2.1.5.1) = Gauge32: 10000000 +RFC1213-MIB::ifSpeed.2 (.1.3.6.1.2.1.2.2.1.5.2) = Gauge32: 1000000000 +RFC1213-MIB::ifSpeed.3 (.1.3.6.1.2.1.2.2.1.5.3) = Gauge32: 0 +RFC1213-MIB::ifSpeed.4 (.1.3.6.1.2.1.2.2.1.5.4) = Gauge32: 0 +ifPhysAddress : .1.3.6.1.2.1.2.2.1.6 : branch +RFC1213-MIB::ifPhysAddress.1 (.1.3.6.1.2.1.2.2.1.6.1) = "" +RFC1213-MIB::ifPhysAddress.2 (.1.3.6.1.2.1.2.2.1.6.2) = Hex-STRING: 00 16 35 5B 89 60 +RFC1213-MIB::ifPhysAddress.3 (.1.3.6.1.2.1.2.2.1.6.3) = Hex-STRING: 00 16 35 5B 89 5F +RFC1213-MIB::ifPhysAddress.4 (.1.3.6.1.2.1.2.2.1.6.4) = Hex-STRING: 00 00 00 00 89 5F +ifAdminStatus : .1.3.6.1.2.1.2.2.1.7 : branch + ## Values: up(1), down(2), testing(3) +ifAdminStatusTxt : SWITCH : {ifAdminStatus} 1=up,2=down,3=testing +RFC1213-MIB::ifAdminStatus.1 (.1.3.6.1.2.1.2.2.1.7.1) = INTEGER: up(1) +RFC1213-MIB::ifAdminStatus.2 (.1.3.6.1.2.1.2.2.1.7.2) = INTEGER: up(1) +RFC1213-MIB::ifAdminStatus.3 (.1.3.6.1.2.1.2.2.1.7.3) = INTEGER: down(2) +RFC1213-MIB::ifAdminStatus.4 (.1.3.6.1.2.1.2.2.1.7.4) = INTEGER: down(2) +ifOperStatus : .1.3.6.1.2.1.2.2.1.8 : branch + ## Values: up(1), down(2), testing(3) +ifOperStatusTxt : SWITCH : {ifOperStatus} 1=up,2=down,3=testing +RFC1213-MIB::ifOperStatus.1 (.1.3.6.1.2.1.2.2.1.8.1) = INTEGER: up(1) +RFC1213-MIB::ifOperStatus.2 (.1.3.6.1.2.1.2.2.1.8.2) = INTEGER: up(1) +RFC1213-MIB::ifOperStatus.3 (.1.3.6.1.2.1.2.2.1.8.3) = INTEGER: down(2) +RFC1213-MIB::ifOperStatus.4 (.1.3.6.1.2.1.2.2.1.8.4) = INTEGER: down(2) +ifInOctets : .1.3.6.1.2.1.2.2.1.10 : branch +RFC1213-MIB::ifInOctets.1 (.1.3.6.1.2.1.2.2.1.10.1) = Counter32: 1747840320 +RFC1213-MIB::ifInOctets.2 (.1.3.6.1.2.1.2.2.1.10.2) = Counter32: 1897765870 +RFC1213-MIB::ifInOctets.3 (.1.3.6.1.2.1.2.2.1.10.3) = Counter32: 0 +RFC1213-MIB::ifInOctets.4 (.1.3.6.1.2.1.2.2.1.10.4) = Counter32: 0 +ifInUcastPkts : .1.3.6.1.2.1.2.2.1.11 : branch +RFC1213-MIB::ifInUcastPkts.1 (.1.3.6.1.2.1.2.2.1.11.1) = Counter32: 369931020 +RFC1213-MIB::ifInUcastPkts.2 (.1.3.6.1.2.1.2.2.1.11.2) = Counter32: 3742681648 +RFC1213-MIB::ifInUcastPkts.3 (.1.3.6.1.2.1.2.2.1.11.3) = Counter32: 0 +RFC1213-MIB::ifInUcastPkts.4 (.1.3.6.1.2.1.2.2.1.11.4) = Counter32: 0 +ifInDiscards : .1.3.6.1.2.1.2.2.1.13 : branch +RFC1213-MIB::ifInDiscards.1 (.1.3.6.1.2.1.2.2.1.13.1) = Counter32: 0 +RFC1213-MIB::ifInDiscards.2 (.1.3.6.1.2.1.2.2.1.13.2) = Counter32: 498 +RFC1213-MIB::ifInDiscards.3 (.1.3.6.1.2.1.2.2.1.13.3) = Counter32: 0 +RFC1213-MIB::ifInDiscards.4 (.1.3.6.1.2.1.2.2.1.13.4) = Counter32: 0 +ifInErrors : .1.3.6.1.2.1.2.2.1.14 : branch +RFC1213-MIB::ifInErrors.1 (.1.3.6.1.2.1.2.2.1.14.1) = Counter32: 0 +RFC1213-MIB::ifInErrors.2 (.1.3.6.1.2.1.2.2.1.14.2) = Counter32: 0 +RFC1213-MIB::ifInErrors.3 (.1.3.6.1.2.1.2.2.1.14.3) = Counter32: 0 +RFC1213-MIB::ifInErrors.4 (.1.3.6.1.2.1.2.2.1.14.4) = Counter32: 0 +ifOutOctets : .1.3.6.1.2.1.2.2.1.16 : branch +RFC1213-MIB::ifOutOctets.1 (.1.3.6.1.2.1.2.2.1.16.1) = Counter32: 1747842686 +RFC1213-MIB::ifOutOctets.2 (.1.3.6.1.2.1.2.2.1.16.2) = Counter32: 538554096 +RFC1213-MIB::ifOutOctets.3 (.1.3.6.1.2.1.2.2.1.16.3) = Counter32: 0 +RFC1213-MIB::ifOutOctets.4 (.1.3.6.1.2.1.2.2.1.16.4) = Counter32: 0 +ifOutUcastPkts : .1.3.6.1.2.1.2.2.1.17 : branch +RFC1213-MIB::ifOutUcastPkts.1 (.1.3.6.1.2.1.2.2.1.17.1) = Counter32: 369931052 +RFC1213-MIB::ifOutUcastPkts.2 (.1.3.6.1.2.1.2.2.1.17.2) = Counter32: 2398891222 +RFC1213-MIB::ifOutUcastPkts.3 (.1.3.6.1.2.1.2.2.1.17.3) = Counter32: 0 +RFC1213-MIB::ifOutUcastPkts.4 (.1.3.6.1.2.1.2.2.1.17.4) = Counter32: 0 +ifOutDiscards : .1.3.6.1.2.1.2.2.1.19 : branch +RFC1213-MIB::ifOutDiscards.1 (.1.3.6.1.2.1.2.2.1.19.1) = Counter32: 0 +RFC1213-MIB::ifOutDiscards.2 (.1.3.6.1.2.1.2.2.1.19.2) = Counter32: 0 +RFC1213-MIB::ifOutDiscards.3 (.1.3.6.1.2.1.2.2.1.19.3) = Counter32: 0 +RFC1213-MIB::ifOutDiscards.4 (.1.3.6.1.2.1.2.2.1.19.4) = Counter32: 0 +ifOutErrors : .1.3.6.1.2.1.2.2.1.20 : branch +RFC1213-MIB::ifOutErrors.1 (.1.3.6.1.2.1.2.2.1.20.1) = Counter32: 0 +RFC1213-MIB::ifOutErrors.2 (.1.3.6.1.2.1.2.2.1.20.2) = Counter32: 0 +RFC1213-MIB::ifOutErrors.3 (.1.3.6.1.2.1.2.2.1.20.3) = Counter32: 0 +RFC1213-MIB::ifOutErrors.4 (.1.3.6.1.2.1.2.2.1.20.4) = Counter32: 0 +ifOutQLen : .1.3.6.1.2.1.2.2.1.21 : branch +RFC1213-MIB::ifOutQLen.1 (.1.3.6.1.2.1.2.2.1.21.1) = Gauge32: 0 +RFC1213-MIB::ifOutQLen.2 (.1.3.6.1.2.1.2.2.1.21.2) = Gauge32: 0 +RFC1213-MIB::ifOutQLen.3 (.1.3.6.1.2.1.2.2.1.21.3) = Gauge32: 0 +RFC1213-MIB::ifOutQLen.4 (.1.3.6.1.2.1.2.2.1.21.4) = Gauge32: 0 +ifSpecific : .1.3.6.1.2.1.2.2.1.22 : branch +RFC1213-MIB::ifSpecific.1 (.1.3.6.1.2.1.2.2.1.22.1) = OID: SNMPv2-SMI::zeroDotZero +RFC1213-MIB::ifSpecific.2 (.1.3.6.1.2.1.2.2.1.22.2) = OID: SNMPv2-SMI::zeroDotZero +RFC1213-MIB::ifSpecific.3 (.1.3.6.1.2.1.2.2.1.22.3) = OID: SNMPv2-SMI::zeroDotZero +RFC1213-MIB::ifSpecific.4 (.1.3.6.1.2.1.2.2.1.22.4) = OID: SNMPv2-SMI::zeroDotZero + +oids file:: +ifIndex : .1.3.6.1.2.1.2.2.1.1 : branch +ifDescr : .1.3.6.1.2.1.2.2.1.2 : branch +ifType : .1.3.6.1.2.1.2.2.1.3 : branch +ifMtu : .1.3.6.1.2.1.2.2.1.4 : branch +ifSpeed : .1.3.6.1.2.1.2.2.1.5 : branch +ifPhysAddress : .1.3.6.1.2.1.2.2.1.6 : branch +ifAdminStatus : .1.3.6.1.2.1.2.2.1.7 : branch +ifOperStatus : .1.3.6.1.2.1.2.2.1.8 : branch +ifInOctets : .1.3.6.1.2.1.2.2.1.10 : branch +ifInUcastPkts : .1.3.6.1.2.1.2.2.1.11 : branch +ifInDiscards : .1.3.6.1.2.1.2.2.1.13 : branch +ifInErrors : .1.3.6.1.2.1.2.2.1.14 : branch +ifOutOctets : .1.3.6.1.2.1.2.2.1.16 : branch +ifOutUcastPkts : .1.3.6.1.2.1.2.2.1.17 : branch +ifOutDiscards : .1.3.6.1.2.1.2.2.1.19 : branch +ifOutErrors : .1.3.6.1.2.1.2.2.1.20 : branch +ifOutQLen : .1.3.6.1.2.1.2.2.1.21 : branch +ifSpecific : .1.3.6.1.2.1.2.2.1.22 : branch + +transforms file:: +ifTypeTxt : SWITCH : {ifType} 1=other,2=regular1822,3=hdh1822,4=ddn-x25,5=rfc877-x25,6=ethernet-csmacd,7=iso88023-csmacd,8=iso88024-tokenBus,9=iso88025-tokenRin +g,10=iso88026-man,11=starLan,12=proteon-10Mbit,13=proteon-80Mbit,14=hyperchannel,15=fddi,16=lapb,17=sdlc,18=ds1,19=e1,20=basicISDN,21=primaryISDN,22=propPointToPointSerial,2 +3=ppp,24=softwareLoopback,25=eon,26=ethernet-3Mbit,27=nsip,28=slip,29=ultra,30=ds3,31=sip,32=frame-relay +ifAdminStatusTxt : SWITCH : {ifAdminStatus} 1=up,2=down,3=testing +ifOperStatusTxt : SWITCH : {ifOperStatus} 1=up,2=down,3=testing + +thresholds file:: +ifTypeTxt : green : iso88024-tokenBus|iso88025-tokenRing : +ifTypeTxt : yellow : other|regular1822|hdh1822|ddn-x25|rfc877-x25|ethernet-csmacd|iso88023-csmacd|iso88026-man|starLan|proteon-10Mbit|proteon-80Mbit|hyperchannel|fddi| +lapb|sdlc|ds1|e1|basicISDN|primaryISDN|propPointToPointSerial|ppp|softwareLoopback|eon|ethernet-3Mbit|nsip|slip|ultra|ds3|sip|frame-relay : +ifTypeTxt : red : : +ifAdminStatusTxt : green : : +ifAdminStatusTxt : yellow : up|down|testing : +ifAdminStatusTxt : red : : +ifOperStatusTxt : green : : +ifOperStatusTxt : yellow : up|down|testing : +ifOperStatusTxt : red : : + Added: trunk/extras/templatebuilder.pl =================================================================== --- trunk/extras/templatebuilder.pl (rev 0) +++ trunk/extras/templatebuilder.pl 2009-09-11 07:51:41 UTC (rev 148) @@ -0,0 +1,99 @@ +#!/usr/bin/perl -w + +use strict; +use Data::Dumper; + +$|=1; + +my $snmpargs = ""; +while(scalar @ARGV > 2) { + $snmpargs .= (shift) . " "; +} +my $host = shift || "localhost"; +my $base = shift || "ifTable"; + +my %trans = (); +my %enum = (); +my @walkproc= (); + +sub OIDNumLookup { + my ($mib,$var,$tail) = @_; + if($tail =~ /^\..+$/) { + return $trans{"${mib}::$var"}.$tail; + } else { + return $trans{"${mib}::$var$tail"}; + } +} + +print "snmpwalk $snmpargs -OE $host $base\n"; +my @walk = `snmpwalk $snmpargs -OE $host $base`; +chomp @walk; +#print Dumper @walk; +my $c = -1; +foreach my $l (@walk) { + if(my ($mib,$var,$tail) = ($l =~ /^([^:]+)::([^.]+)(.*) = /)) { + $trans{"${mib}::$var"} = ""; +# $trans{"${mib}::$var$tail"} = ""; + if($l =~ /= INTEGER: .*\(\d+\)$/) { + $enum{"${mib}::$var"} = ""; + } + push @walkproc,($l); + $c++; + } else { + $walkproc[$c] .= "\n$l"; + } +} +my @keylist = sort grep !/\./,keys %trans; +#print Dumper @keylist; +my $transcmd = "snmptranslate -On ".join " ",@keylist; +my @translist = `$transcmd`; +chomp @translist; +#print Dumper @translist; +for(my $i=0;$i<=$#keylist;$i++) { + $trans{$keylist[$i]} = $translist[2*$i]; +} +my @enumlist = keys %enum; +$transcmd = "snmptranslate -Tp ".join " ",@enumlist; +@translist = grep / (EnumVal|Values:) /,`$transcmd`; +chomp @translist; +for(my $i=0;$i<=$#enumlist;$i++) { + $enum{$enumlist[$i]} = $translist[1+2*$i]; + $enum{$enumlist[$i]} =~ s/^\s+//; +} +my %varprint; +my %enumprint; +my @oidprint = (); +my @transformprint = (); +my @threshprint = (); +foreach my $l (@walkproc) { + my ($mib,$var,$tail,$rest) = ($l =~ /^([^:]+)::([^.]+)(.*)( = .*)$/s); + $tail ||= ""; + #printf ("mib: %s var: %s tail: %s rest: $rest\n",$mib,$var,$tail,$rest); + unless( defined $varprint{"${mib}::$var"} ) { + print "$var\t: ".$trans{"${mib}::$var"}."\t: branch\n"; + print "$var\t: ".$trans{"${mib}::$var"}.".0\t: leaf\n" if $tail eq ".0"; + push @oidprint,("$var\t: ".$trans{"${mib}::$var"}."\t: branch\n"); + push @oidprint,("$var\t: ".$trans{"${mib}::$var"}.".0\t: leaf\n") if $tail eq ".0"; + } + $varprint{"${mib}::$var"} = 1; + if($l =~ /= INTEGER: .*\(\d+\)$/) { + unless( $enumprint{"${mib}::$var"} ) { + printf " ## %s\n",$enum{"${mib}::$var"}; + my $el = $enum{"${mib}::$var"}; + $el =~ s/^\s*Values:\s*//; + my @elv = map {s/^(.*)\((\-?\d+)\)/$2=$1/; $_;} split /,\s*/,$el; + my @thv = map {s/^(.*)\(\-?\d+\)/$1/; $_;} split /,\s*/,$el; + #@elv =~ s/^(.*)\((\d+)\)/$2=$1/; + printf "${var}Txt\t: SWITCH\t: {$var} %s\n",join ",",@elv; + push @transformprint, (sprintf "${var}Txt\t: SWITCH\t: {$var} %s\n",join ",",@elv); + push @threshprint, (sprintf "${var}Txt\t: green : %s\t:\n",join "|",grep /(ok|good|online|closed|locked)/i,@thv); + push @threshprint, (sprintf "${var}Txt\t: yellow : %s\t:\n",join "|",grep !/(ok|good|online|closed|locked|fail|degrade|offline)/i,@thv); + push @threshprint, (sprintf "${var}Txt\t: red : %s\t:\n",join "|",grep /(fail|degrade|offline)/i,@thv); + } + $enumprint{"${mib}::$var"} = 1; + } + print "${mib}::$var$tail (".OIDNumLookup($mib,$var,$tail).")$rest\n"; +} +print "\noids file::\n",@oidprint; +print "\ntransforms file::\n",@transformprint; +print "\nthresholds file::\n",@threshprint; Property changes on: trunk/extras/templatebuilder.pl ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |