FAQ:Agent 07

From Net-SNMP Wiki
Jump to: navigation, search

What's the difference between 'exec', 'sh' and 'pass'?

'exec' will run the specified command and return the exit status and output. Any arguments are passed directly to the command, with no special interpretation.

'sh' is similar, but invokes a shell to run the command line given. This means that quoted arguments will be recognised as such, and also allows redirection, and other similar shell interpretation. The results are returned in exactly the same way.

'extend' is also similar, but provides a richer and more flexible MIB framework - both for configuring the exact command to be run, and for displaying the results.

None of these mechanisms require the command to have any knowledge of SNMP, or the fact that they are being used in this manner. But the output is returned in a fixed format, and it is up to the receiving application to interpret this appropriately.

Note that the "relocatable" form of the 'exec' directive (exec OID ....) produces MIB output that is not strictly valid. For this reason, support for this has been deprecated in favour of extend OID ... , which produces well-formed MIB results (as well as providing fuller functionality).
The most recent releases of the agent don't include support for "relocatable exec" by default. This needs to be explicitly included when the agent is first compiled, by including the module ucd-snmp/extensible instead of agent/extend.


'pass' is a more general mechanism for implementing arbitrary MIB objects. The specified command will be invoked for any request within the named MIB subtree, and passed details of the requested OID. It should return the information relevant to the requested OID.

'pass-persist' is similar, but the command will continue running even after the initial request has been answered. These two mechanisms can be used to implement a particular MIB, following the correct MIB structure (as opposed to the fixed format of exec/sh/extend).

All of these mechanisms are described in the 'snmpd.conf(5)' man page, in the section entitled Extending Agent Functionality.

   FAQ:Agent
   
  1. What MIBs are supported?
  2. What protocols are supported?
  3. How do I configure the agent?
  4. How do I remove a MIB from the agent?
  5. I've installed a new MIB file. Why can't I query it?
  6. How do I add a MIB to the agent?
  7. What's the difference between 'exec', 'sh', 'extend' and 'pass'?
  8. What's the difference between AgentX, SMUX and proxied SNMP?
  9. What is the purpose of 'dlmod'?
  10. Which extension mechanism should I use?
  11. Can I use AgentX when running under Windows?
  12. How can I run AgentX with a different socket address?
  13. How can I turn off SMUX support?
  14. How can I combine two copies of the 'mib2' tree from separate subagents?
  15. What traps are sent by the agent?
  16. Where are these traps sent to?
  17. How can I send a particular trap to selected destinations?
  18. When I run the agent it runs and then quits without staying around. Why?
  19. After a while the agent stops responding, and starts eating CPU time. Why?
  20. How can I stop other people getting at my agent?
  21. How can I listen on just one particular interface?
  22. The agent is complaining about 'snmpd.conf'. Where is this?
  23. Why does the agent complain about 'no access control information'?
  24. How do I configure access control?
  25. How do I configure SNMPv3 users?
  26. The 'createUser' line disappears when I start the agent. Why?
  27. What's the difference between /var/net-snmp and /usr/local/share/snmp?
  28. My new agent is ignoring the old snmpd.conf file. Why?
  29. Where should the snmpd.conf file go?
  30. Why am I getting "Connection refused"?
  31. Why can't I see values in the UCDavis 'extensible' or 'disk' trees?
  32. Why can't I see values in the UCDavis 'memory' or 'vmstat' tree?
  33. What do the CPU statistics mean - is this the load average?
  34. How do I get percentage CPU utilization using ssCpuRawIdle?
  35. What about multi-processor systems?
  36. The speed/type of my network interfaces is wrong - how can I fix it?
  37. The interface statistics for my subinterfaces are all zero - why?
  38. Does the agent support the RMON-MIB?
  39. What does "klread: bad address" mean?
  40. What does "nlist err: wombat not found" (or similar) mean?
  41. What does "Can't open /dev/kmem" mean?
  42. The system uptime (sysUpTime) returned is wrong!
  43. Can the agent run multi-threaded?
  44. Can I use AgentX (or an embedded SNMP agent) in a threaded application?