2011-09-28 59 views
2

我正在製作網絡設備監視器。其中一部分是PHP前端,用戶可以輸入他感興趣的SNMP值(SNMP OID)。我想簡化用戶的流程,因此我想創建一個簡單的MIB瀏覽器,允許用戶從樹中選擇值。解析SNMP MIB文件(OID翻譯)

問題是將MIB文件從數據庫中讀取(或者至少是類似於XML的格式),然後將它們呈現給用戶。即時解析MIB文件對我來說似乎很浪費,因此排除了PHP的snmp_read_mib() - 除非我可以讀取MIB一次並將OID轉換保存到數據庫?

此外,我想避免編寫我自己的解析器,如果可能的話。 :)

我發現libsmi,但我不知道如何使用它的這種情況下...我嘗試使用smidump,但只能創建一些簡短的XML沒有有用的內容。儘管我沒有嘗試使用xmldump,因爲它在Debian上不可用(作爲包),並且必須從源代碼構建它。另外,我認爲它是從2005年開始的。它會有幫助嗎?

所以問題是:如何從MIB文件中讀取OID名稱和/或其他數據(SNMP陷阱信息)並將它們轉換爲某種隨時可用的格式?

+0

你寫了關於「...讀取MIB一次,並保存OID翻譯...」與我認爲是懷疑;你擔心你會溢出內存嗎? MIB - 或者至少對你很重要的部分 - 可能相當小。我不會感到驚訝,你可以簡單地將它們保留在表示樹的PHP變量中。 *我*會在那裏開始我的實驗。在任何情況下,這將遠離PHP編碼的第一個MIB瀏覽器... –

+0

不,這不是懷疑 - 我沒有看到從MIB文件中獲取所有可能的OID轉換的方法(只是函數來翻譯已知的單個奧迪斯/名)。我在這裏錯過了什麼嗎?順便說一句:我需要瀏覽可能的值,而不是設備上的值...我希望這是有道理的。 :) – johndodo

+0

johndodo,我們可能會混淆對方。在回覆時,我想強調一下:PHP編碼的MIB瀏覽器已經可用,並且可能會讓您感興趣。除此之外,我只是建議您走完整個MIB並保留所有可能對您有用的數據。你想要那樣做的代碼嗎? –

回答

2

我結束了使用Mibble - 我寫的,它使用的小程序該庫分析MIB並輸出數據。很簡單,似乎很好地工作。

不過,謝謝你們都試圖幫助我 - 我欣賞它!

+1

johndodo,感謝*你*報告你的經驗。你說得很對,我的閱讀很粗心,並且沒有意識到你是從*文件*而不是LDAP實例工作的。我很高興聽到你的Mibble方法成功。 –

1
smidump -f identifiers <MIB_filename> 

如果MIB是沒有達到標準與它的語法,使用

smilint -ms <MIB_filename> 

這應該讓你開始

+0

謝謝,但只是打印「由於嚴重的解析錯誤而中止」(在ExtremeNetwork的MIB上測試:http://extremenetworks.com/libraries/services/v762b3.mib),開關「-k」沒有幫助... smilint也會返回錯誤,所以我猜MIB是不正確的。但是,我仍然需要解析它。 – johndodo