您的位置:首页 > 其它

关于net-snmp中的No Such Instance currently exists at this OID

2010-03-10 20:48 691 查看
这几天在看snmp顺便自己编译,调试了一下net-snmp。net-snmp写的很难读。在自己写了一个MIB文件,并添加到net-snmp中调用snmpget去获得其中的节点值时,碰到“No Such Instance currently exists at this OID”的问题。这几天经过用ddd调试以及查找网络终于可以通过snmpget来获取自己的MIB 文件中的相关节点值了。

本着感谢网络,感谢把自己调试经验写出来的前辈们的想法,觉得有必要把自己的得到的一点理解总结一下,固有此文。

就我在此次调试中碰到的“No Such Instance currently exists at this OID”的出现原因有三种。

(1)MIB文件没有正确添加到MIB树里面,因此agent在收到查询以后真的找不到目标OID.
(2)MIB文件添加成功了,但是snmpd.conf里面的关于权限的配置不对。agent在收到client的查询以后也找到了该OID但是因为没有权限因此返回“No Such Instance currently exists at this OID”。关于权限粗看会以为很复杂,尤其是在心浮气燥的时候,其实静下心来仔细看看就会发现也就那么回事。以USM命名的权限管理还是很清晰的。
(3)第三种情况比较特殊,对于net-snmp不熟的也可能会范理解上的错误。
使用snmpget而忘记了添加OID结尾的实例标识符,net-snmp则会报出“No Such Instance currently exists at this OID”的错误。
如果怀疑是这中错误可以用snmpgetnext先试一试。
SNMP中的GETNEXT请求的作用类似snmpget,但是更加具有通用性,它是一个具有模糊匹配特性的GET请求。有时使用snmpget会报错但是使用snmpgetnext则不会报错,它会 向下查找 并找到距离最近的一个实例,然后返回它的值。(单独使用snmpgetnext操作的机会不太多,它经常被当作遍历表中所有数据的一个基本操作。

调试时,

多看net-snmp的官方wiki

http://www.net-snmp.org/wiki/index.php/Vacm

多查网络是没有错的。

再次表达一下心情。
感谢祖国,感谢党,感谢前辈,感谢互联网。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐