Get OID's type (syntax) from MIB using Net-SNM

2019-05-05 17:34发布

问题:

How can I get the syntax type and read/write access for an OID using NET-SNMP API?

I am writing an SNMP tool that reads and sets values on a remote machine using SNMP protocol. Before setting the value, I need to check its type and access permissions (whether it is allowed to write this value on the server or not) from the MIB file.

Unfortunately, I could not find any mention regarding how to do this in the Net-SNMP documentation.

回答1:

Roughly speaking:

  oid name[128];
  size_t name_length = OID_LENGTH(name);
  strict tree *tp;

  read_objid("sysContact.0", &name, &name_length);
  tp = get_tree(name, name_length, get_tree_head();
  

Then look through the net-snmp/library/parse.h file for the tree structure and all the good data you need is inside it.

Also see the apps/snmptranslate.c file for further examples.



回答2:

What Wes said should probably work for what you're trying to do. Alternatively, in your implementation, to check the input type of the set value explicitly, use netsnmp_check_vb_type(). For checking permissions, net-snmp will throw a notWritable error if you try to modify a field without write access (as defined in the relevant MIB).