使用Net-SNMP API从MIB获取OID的类型(语法)

时间:2011-01-24 20:15:20

标签: snmp net-snmp oid

如何使用NET-SNMP API获取OID的语法类型和读/写访问权限?

我正在编写一个SNMP工具,使用SNMP协议读取和设置远程计算机上的值。在设置值之前,我需要从MIB文件中检查其类型和访问权限(是否允许在服务器上写入此值)。

不幸的是,我在Net-SNMP文档中找不到有关如何执行此操作的任何内容。

2 个答案:

答案 0 :(得分:4)

粗略地说:

  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();
  

然后查看net-snmp / library / parse.h文件中的树结构,你需要的所有好数据都在其中。

另请参阅apps / snmptranslate.c文件以获取更多示例。

答案 1 :(得分:0)

Wes所说的应该可能适用于你想要做的事情。或者,在您的实现中,要显式检查设置值的输入类型,请使用netsnmp_check_vb_type()。为了检查权限,如果您尝试修改没有写访问权限的字段(如相关MIB中所定义),net-snmp将抛出一个notWritable错误。