我正在製作網絡設備監視器。其中一部分是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陷阱信息)並將它們轉換爲某種隨時可用的格式?
你寫了關於「...讀取MIB一次,並保存OID翻譯...」與我認爲是懷疑;你擔心你會溢出內存嗎? MIB - 或者至少對你很重要的部分 - 可能相當小。我不會感到驚訝,你可以簡單地將它們保留在表示樹的PHP變量中。 *我*會在那裏開始我的實驗。在任何情況下,這將遠離PHP編碼的第一個MIB瀏覽器... –
不,這不是懷疑 - 我沒有看到從MIB文件中獲取所有可能的OID轉換的方法(只是函數來翻譯已知的單個奧迪斯/名)。我在這裏錯過了什麼嗎?順便說一句:我需要瀏覽可能的值,而不是設備上的值...我希望這是有道理的。 :) – johndodo
johndodo,我們可能會混淆對方。在回覆時,我想強調一下:PHP編碼的MIB瀏覽器已經可用,並且可能會讓您感興趣。除此之外,我只是建議您走完整個MIB並保留所有可能對您有用的數據。你想要那樣做的代碼嗎? –