Hello. I've recently been using (quite extensively) both the Net::SNMP and the SNMP::MIB::Compiler modules to manage several network devices. However, to interface the two modules is slightly unwieldly, since they don't tie together. As a result, I have developed a new module, called 'SNMP::Utils' which provides the "glue" between SNMP::MIB::Compuler and Net::SNMP.
I'd like to contribute this to CPAN, however I notice that the SNMP namespace is a bit strange. It looks like there are sort of two "threads", one which goes along the lines of SNMP::MIB::Compiler (which goes along the lines of Net::SNMP), which provides native Perl interfaces to SNMP, and another which links in to UCD SNMP. I'm really trying to figure out where to stick this...and get some feedback that where I put it isn't nasty :-). I was considering Net::SNMP::Utils (which moves along the thread that SNMP::MIB::Compiler would move to Net::SNMP::Mib or some such thing). I've also attached the perldoc for this module, so you get an idea of what it does... thoughts? thanks. chander
Utils(3) User Contributed Perl Documentation Utils(3) NNAAMMEE SNMP::Utils - Perl utility module to tie together SNMP::MIB and Net::SNMP modules. SSYYNNOOPPSSIISS use SNMP::Utils; my $snmpUtil = new SNMP::Utils; my $result = $snmpUtil->getSNMPTable(-snmp => $snmp, -name => \@name); my $name = $snmpUtil->convert_oid('1.3.6.1.2.1'); my $oid = $snmpUtil->resolve_oid('dot1StPPortTable'); my $enumtxt = $snmpUtil->convert_enum('dot1dStpPriority', 5); my $enum = $snmpUtil->convert_enum ('dot1dStpPriority', $enumtxt); my $value = $snmpUtil->get_value (-snmp => $snmpObj, -name => "dot1dStpPortPriority", -instance => 3); my $result = $snmpUtil->set_value(-snmp => $snmpObj, -name => "dot1dStpPortPriority", -instance => 3, -value => 2); DDEESSCCRRIIPPTTIIOONN SNMP::Utils is a set of management utility functions that tie Net::SNMP together with SNMP::MIB. It provides a link between the Net::SNMP module and the MIB, performing con- versions from numeric OID's to textual identifiers. AAcccceessss $snmpUtil=new SNMP::Utils; Create a new SNMP::Utils object. set_value(-snmp => Net::SNMP object, -name => 'objname', -value => "value", -instance => "1-4,6") Set a value and return the result (set value). Instance can be specified as a reference to an array of ports, a range of instances '1-4' would be instances 1,2,3,4 or a single instance (scalar value). Instances of 1-4,3,3,9 would result in 1,2,3,4,3,3, and 9 (3 would be set thrice, but only the last return code would be returned!!). In the case of a single instance, the response will be a scalar with the result (or undef on failure). In the case of multiple instances, the response will be two hashes of the form 'Instance' => 'value' . Failed instances will be undefined. The second hash will be of the same form, but will contain only errors returned (on failure). In the case of a single set, the exercise of checking the return code is left to the user. get_value (-snmp => Net::SNMP object, -name => "objname", -instance => 1) Retrieve the value and return the result. Unlike set_value, instances are currently not supported here. convert_enum ('objName', value) Performs conversions of enum values from numeric to textual and vice versa. If b<value> is a number, it will be converted to its textual equivalent if it exists. If b<value> is a text string, it will be con- verted to its numeric equivalent if it exists. If no enums exist for the b<objName> specified, then the value returned will be undefined. The same is true if the avlue is invalid (not defined in the enum table). add_path add_extension repository compile tree These functions are all inherited from the SNMP::MIB::Compiler module. Please refer to the SNMP::MIB::Compiler documentation for their usage syn- tax. getSNMPTable(-snmp => Net::SNMP object, -name => 'obj- name') Takes a table name as an argument, retrieves it, and returns the results in a hash. Each element of the response hash in turn contains a hash with the results of the retrieve. A Net::SNMP object must be provided for this call. EEXXPPOORRTT None by default. This module should be called only using object oriented methods. AAUUTTHHOORR Chander Ganesan <[EMAIL PROTECTED]> SSEEEE AALLSSOO perl. Net::SNMP. SNMP::MIB::Compiler perl v5.6.1 2002-12-24 Utils(3)