Hi! I have no success attempting to extend the SNMP agent with Perl in SLES11 SP3 (using a somewhat older version and tools):
Whatever I try, my agent won't register. I also searched the Internet for tutorials, example code and explanations, but I failed. Mainly the reason for writing this is the lack of documentation, inconsitent documentation, and the inability to get error details. So first I tried to used the embed Perl variant with $agent->register($name, $OID, \&handler) That never succeded, and there is not detailed error message (as it's available in $@ when usinf the LDAP module, for example). Also the manual page of NetSNMP::agent says $agent->register("my_agent_name", ".1.3.6.1.4.1.8072.9999.9999.7375", \&myhandler); while some code that is supposed to work uses "new NetSNMP::OID($OID)" instead of $OID Further the snmpd.conf manual page says perl 'do /path/to/file.pl'; while the manual page of NetSNMP::agent says perl do /path/to/file.pl; I also found the variant perl do "/path/to/file.pl"; Thinking about it I feel that perl "do '/path/to/file.pl';" probably is correct. So what? Despite of that questions remaining for the example in NetSNMP::agent and OID ".1.3.6.1.4.1.8072.9999.9999.7375" are: Does the OID have to "join" a leaf of the OID tree, or do missing intermediate node come into existance automagically? Can existing parts of the OID tree be replaced, or can only new branches be created? So after having no success in running and debugging the embedded Perl, I tried the AgentX variant. Here also I had no success, probable due to a missing configuration file. The manual page of NetSNMP::agent is rather vague on that: $agent->register("my_agent_name", ".1.3.6.1.4.1.8072.9999.9999.7375", \&myhandler); seems to imply that some "my_agent_name" configuration file must exist in some path. The manual page says: Name of the agent (optional, defaults to "perl") (The snmp library will read a NAME.conf snmp configuration file based on this argument.) But where exactly is the file looked for, and what must be in it? When trying to start my subagent, I get this: Warning: Failed to connect to the agentx master agent ([NIL]): Error registering Argument "netSnmpPlaypen.7375" isn't numeric in subroutine entry at /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/NetSNMP/OID.pm line 152. (The latter line is) my $val = constant($constname, @_ ? $_[0] : 0);b For AgentX the snmpd.conf manual page says the option is named "agentXSocket", while "snmpd -H" lists it as "agentxsocket". When I configured "agentx master", I saw a UNIX domain socket opened at /var/run/agentx/master. Then I still get: NET-SNMP version 5.4.2.1 AgentX subagent connected Error registering Argument "netSnmpPlaypen.7375" isn't numeric in subroutine entry at /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/NetSNMP/OID.pm line 152. My Perl code modelled after the manual page looks like this (relevant part): --- my $name = 'test_agent'; my $OID = '.1.3.6.1.4.1.8072.9999.9999.7375'; my $agent = new NetSNMP::agent('Name' => $name, 'AgentX' => 1); if ($agent->register($name, new NetSNMP::OID($OID), \&handler) == 0) { my $run = 1; print $log "Registered $name for OID $OID\n"; while ($run) { $agent->agent_check_and_process(1) } $agent->shutdown(); } else { print STDERR "Error registering\n"; print $log "Error registering\n"; } --- Any help appreciated. Regards, Ulrich ------------------------------------------------------------------------------ _______________________________________________ Net-snmp-users mailing list Net-snmp-users@lists.sourceforge.net Please see the following page to unsubscribe or change other options: https://lists.sourceforge.net/lists/listinfo/net-snmp-users