Joao, Thanks for your help. I added the "use NetSNMP::ASN qw(ASN_OCTET_STR ASN_INTEGER);" to my PERL code and it ran fine. However, I had to leave the matching OID in the code with a trailing ".0" in the code for the snmpget command to carry the full OID (with the trailing .0 ).
Thanks again, Bob ----- Original Message ----- From: "Joao Ferreira" <[email protected]> To: [email protected] Cc: "Net-SNMP support" <[email protected]> Sent: Monday, May 31, 2010 6:51:14 AM GMT -05:00 US/Canada Eastern Subject: Re: OID registration failure - PERL agent On Mon, 2010-05-31 at 11:45 +0100, Joao Ferreira gmail wrote: > hello Bob > > I ran your sub-agent on my system and I only needed to add this at the > top: > > use NetSNMP::ASN qw(ASN_OCTET_STR ASN_INTEGER); > > I was getting this in the snmpd logs: > > "May 31 07:35:24 xone snmpd[5680]: unknown var value type: 0 " > > agent was complaining about not knowing what ASN_OCTET_STRING was :) > > you should be ok now.... I also had to remove the trailing ".0" from the code.... like this: if ($oid == new NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.7375.1")) { $request->setValue(ASN_OCTET_STR, "hello world!"); } I'm quite sure you really don't want the ".0" in the end of the OID's by I'm not 100% sure.... U need to have a closer look Joao > > Joao > > > On Sun, 2010-05-30 at 15:39 +0000, [email protected] wrote: > > I have been having trouble getting the perl mib agent examples going. Does > > not seem to register the OID. Below I include a) test-mib.pl, b) > > snmpd.conf, c) output from 'snmpd' cmd, d) output from good 'snmpget' and > > f) failed 'snmpget' on new OID. > > > > Any suggestions? > > > > Thanks, > > Bob Cole > > =========================================== > > > > > > > > test-mib.pl: > > =========================================== > > use NetSNMP::OID (':all'); > > use NetSNMP::agent (':all'); > > > > > > sub myhandler { > > my ($handler, $registration_info, $request_info, $requests) = @_; > > my $request; > > > > for($request = $requests; $request; $request = > > $request->next()) { > > my $oid = $request->getOID(); > > if ($request_info->getMode() == MODE_GET) { > > # ... generally, you would calculate value from oid > > if ($oid == new > > NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.7375.1.0")) { > > $request->setValue(ASN_OCTET_STR, "hello world!"); > > } > > } elsif ($request_info->getMode() == MODE_GETNEXT) { > > # ... generally, you would calculate value from oid > > if ($oid < new > > NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.7375.1.0")) { > > > > $request->setOID(".1.3.6.1.4.1.8072.9999.9999.7375.1.0"); > > $request->setValue(ASN_OCTET_STR, "hello world!"); > > } > > } > > #elsif ($request_info->getMode() == MODE_SET_RESERVE1) { > > # if ($oid != new > > NetSNMP::OID(".1.3.6.1.4.1.8072.9999.9999.7375.1.0")) { > > # do error checking here > > # $request->setError($request_info, > > SNMP_ERR_NOSUCHNAME); > > # } > > #} elsif ($request_info->getMode() == MODE_SET_ACTION) { > > # ... (or use the value) > > # $value = $request->getValue(); > > #} > > } > > } > > > > > > # > > # Associate the handler with a particular OID tree > > # > > my $rootOID = ".1.3.6.1.4.1.8072.9999.9999.7375"; > > my $regoid = new NetSNMP::OID($rootOID); > > $agent->register("Bob Net-SNMP Agen", $regoid, \&myhandler); > > > > print STDERR "Loaded the Bob example perl snmpagent handler\n"; > > > > =========================================== > > > > > > snmpd.conf: > > =========================================== > > ########################################################################### > > # > > # snmpd.conf > > # > > # - created by the snmpconf configuration program > > # > > ########################################################################### > > # SECTION: System Information Setup > > # > > # This section defines some of the information reported in > > # the "system" mib group in the mibII tree. > > > > # syslocation: The [typically physical] location of the system. > > # Note that setting this value here means that when trying to > > # perform an snmp SET operation to the sysLocation.0 variable will make > > # the agent return the "notWritable" error code. IE, including > > # this token in the snmpd.conf file will disable write access to > > # the variable. > > # arguments: location_string > > > > syslocation rgc_laptop > > > > # syscontact: The contact information for the administrator > > # Note that setting this value here means that when trying to > > # perform an snmp SET operation to the sysContact.0 variable will make > > # the agent return the "notWritable" error code. IE, including > > # this token in the snmpd.conf file will disable write access to > > # the variable. > > # arguments: contact_string > > > > syscontact [email protected] > > # sysservices: The proper value for the sysServices object. > > # arguments: sysservices_number > > > > sysservices 0 > > > > > > > > > > ########################################################################### > > # SECTION: Access Control Setup > > # > > # This section defines who is allowed to talk to your running > > # snmp agent. > > > > # rwuser: a SNMPv3 read-write user > > # arguments: user [noauth|auth|priv] [restriction_oid] > > > > rwuser localhost noauth > > > > # rouser: a SNMPv3 read-only user > > # arguments: user [noauth|auth|priv] [restriction_oid] > > > > rouser localhost noauth > > > > # rocommunity: a SNMPv1/SNMPv2c read-only access community name > > # arguments: community [default|hostname|network/bits] [oid] > > > > rocommunity public > > > > # rwcommunity: a SNMPv1/SNMPv2c read-write access community name > > # arguments: community [default|hostname|network/bits] [oid] > > > > rwcommunity public > > > > > > ##### > > # > > # Embedded perl MIB support here > > # > > ##### > > > > #perl print "\nStarting up the snmpd agent!\n\n"; > > > > perl do "/home/rgc/IETF/DEVELOPMENT/TEST/test-mib.pl"; > > > > > > =========================================== > > > > 'snmpd -DPERL' output: > > =========================================== > > > snmpd -DPERL > > No log handling enabled - turning on stderr logging > > registered debug token PERL, 1 > > Loaded the Bob example perl snmpagent handler > > r...@chapman:~/.snmp# NET-SNMP version 5.5 > > > > r...@chapman:~/.snmp# unknown var value type: 0 > > > > =========================================== > > > > > > 'snmpget -v 2c -c public 127.0.0.1 sysUpTime.0' output: > > =========================================== > > > snmpget -v 2c -c public 127.0.0.1 sysUpTime.0 > > DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1929) 0:00:19.29 > > > > =========================================== > > > > > > 'snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.8072.9999.9999.7375.1.0' > > output: > > =========================================== > > > snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.8072.9999.9999.7375.1.0 > > NET-SNMP-MIB::netSnmpPlaypen.7375.1.0 = No Such Instance currently exists > > at this OID > > > > =========================================== > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > > Net-snmp-users mailing list > > [email protected] > > Please see the following page to unsubscribe or change other options: > > https://lists.sourceforge.net/lists/listinfo/net-snmp-users ------------------------------------------------------------------------------ _______________________________________________ Net-snmp-users mailing list [email protected] Please see the following page to unsubscribe or change other options: https://lists.sourceforge.net/lists/listinfo/net-snmp-users
