如何使用 NET-SNMP API 获取 OID 的语法类型和读/写访问权限?
我正在编写一个 SNMP 工具,它使用 SNMP 协议在远程机器上读取和设置值。在设置值之前,我需要从 MIB 文件中检查它的类型和访问权限(是否允许在服务器上写入这个值)。
不幸的是,我在 Net-SNMP 文档中找不到有关如何执行此操作的任何提及。
大致说来:
名称[128]; size_t name_length = OID_LENGTH(name); 严格树 *tp; read_objid("sysContact.0", &name, &name_length); tp = get_tree(名称,name_length,get_tree_head();
然后查看 net-snmp/library/parse.h 文件中的树结构,您需要的所有好数据都在其中。
另请参阅 apps/snmptranslate.c 文件以获取更多示例。
韦斯所说的应该对你想做的事情有用。或者,在您的实现中,要明确检查设置值的输入类型,请使用 netsnmp_check_vb_type()。为了检查权限,如果您尝试修改没有写入权限的字段(如相关 MIB 中所定义),net-snmp 将抛出 notWritable 错误。