2017-10-08 421 views
0

每個人。 我是snmp新手,面臨以下問題。 我有代理上的snmp表。它僅適用於標誌-Cb(通過getnext命令請求新行)。當我使用net-snmp int ubuntu時,我得到這張表。SNMP Agent獲取表失敗(getnext不增量)

enter image description here

它是如何做在Java中SNMP4J: 它是一步一步通過發送GETNEXT請求獲得每行執行。 但我並沒有指向表OID,而是指出了我想要獲得的列的OID。 getnext返回結果和下一個將在下一個請求中增加的OID。 正如我研究,在snmpgetnext查詢期間沒有獲得增量值。我收到「從GETNEXT或GETBULK返回的OID小於或等於請求的(SNMP不允許的)」。所以我不能在那裏。 我想net-snmp在得到這個錯誤時通過在內部進行增量來避免這個錯誤。

我也嘗試通過net-snmp在ubuntu而不是snmptable中手動執行getnext,但是我得到的一些列只有第一個增量值,這就是它,有些不會增加。

但在增加值SNMPGET工作

enter image description here

它是不是在SNMP代理的錯誤嗎?那麼,在獲得snmp表時,net-snmp本身是否會增加?

+0

請不要張貼數據作爲屏幕截圖。相反,編輯您的問題:複製並粘貼終端中的文本,並將其作爲文本發佈到您的問題中。當您在外部網站上使用屏幕截圖時,如果該外部網站發生故障,問題將無法理解。 – Jolta

回答

0

事實上,在我看來,您的手上有一個錯誤的SNMP代理。 您應該將此報告給代理商供應商。您的第一張截圖中的數據應該足以證明他們將其作爲錯誤報告進行處理。

RFC 1157 section 4.1.3中爲SNMPv1指定了正確的行爲,併爲後續SNMP版本指定了其他一些RFC。但是,它的要點在v2和v3中保持不變。

我不知道怎麼snmptable命令的工作,但它可能會嘗試猜測繼任OID像你說的,但更可能snmptable使用SNMP GetBulkRequest-PDUs的背景下,與代理的執行GETBULK的優於其的GetNext。即在處理GetBulk的代碼中不存在表遍歷錯誤,它會爲您提供整個表格。

嘗試遍歷表snmpwalk,我認爲這隻使用GetNext操作。我的猜測是snmpwalk會停止或循環,就像你的snmpgetnext命令一樣!