關於net-snmp中的No Such Instance currently exists at this OID(轉)


這幾天在看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操作的機會不太多,它經常被當作遍歷表中所有數據的一個基本操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM