2012-06-05 40 views
0

我目前通過使用php成功讀取了SNMP上的多個屬性。現在我正在考慮使snmpgetsnmpwalk的結果輸出對我們API的使用者實際有用。使用PHP解析SNMP響應

問題是,反應是這樣的:INTEGER: up(1)INTEGER: 10103 ...

是否有關於如何解析這個響應格式的任何約定/標準或者是具體的,我們正在試圖讀取每個設備的響應的供應商?

是否有任何機會已經有一個PHP庫,函數或擴展,可以在PHP本地變量或至少有用的東西,我們可以使用這些響應?


UPDATE:

我發現了一些新的東西即確實存在PHP可以解析二進制ASN.1串幾個庫基本上是BER編碼字符串,如果我是對的。問題是,我似乎無法找到一種方式來獲得與PHP的設備進行二進制數據...

回答

1

我不知道你的PHP特別的方法,但你的兩個例子INTEGER之間的差異可能以確定您的系統是否具有與OID相對應的SNMP MIB(例如,確定1表示「up」)。

如果你只想要整數,你應該能夠傳遞一個參數給你的get或walk命令。例如,net-snmp的snmpget或snmpwalk命令將使用-Oe刪除符號標籤。從manpage

   $ snmpget -c public -v 1 localhost ipForwarding.0 
       IP-MIB::ipForwarding.0 = INTEGER: forwarding(1) 
       $ snmpget -c public -v 1 -Oe localhost ipForwarding.0 
       IP-MIB::ipForwarding.0 = INTEGER: 1 

如果您正在分析的net-snmp輸出,我建議你閱讀snmpcmd man page,因爲它有很多感興趣的,將您特別是其他類型的顯示器,比如timeticks和字符串輸出選項。

如果你確實想在PHP中檢索SNMP,你可以看看Cacti does it。 ;)

希望

snmp_set_quick_print(TRUE); 

它將只返回您正在搜索,沒有領先的「整數」左右的值:

1

你可以簡單地在你的腳本開始使用此功能這有助於!