2012-08-10 221 views
2

我正在寫一個php腳本,它允許我使用snmp在設備上獲取和設置某些值。我有設備的MIB,並可以輕鬆地將它加載到PHP中。問題是我無法使用'人類可讀'oid字符串而不是數字字符串(數字oid工作正常)來獲取我正在查找的值。php snmp MIB和walk

我的代碼:

$host = "localhost"; 
$community = "public"; 
$mibFile = "C:\wamp\www\extra\AvenueMIBv105.mib"; 
$oid = '.1.3.6.1.4.1.19021.1.1.0.0.1'; 
snmp_read_mib($mibFile); 

print_r(snmprealwalk($host, $community, $oid)); 

$oid = '.1.3.6.1.4.1.19021.1.1.0.0.1',我得到這樣的輸出:

陣列([AvenueMIBv105 :: private.1.19021.1.1.0.0.1.1.0] => INTEGER: 1 [AvenueMIBv105 :: private.1.19021.1.1.0.0.1.2.0] => INTEGER:1

與$ OID = 'AvenueMIBv105 :: private.slotSelect' 我得到這樣的輸出:

陣列([AvenueMIBv105 :: internet.2.1.1.3.0] => INTEGER:129663870 [AvenueMIBv105 :: internet.2.1.1.4.0] =>六角STRING:75 73 65 72 4E 61 6D 65 00

我希望兩個輸出都一樣。我意識到我必須有'人類可讀的'oid錯誤,但我已經嘗試了大量不同的字符串,並且我總是得到相同的錯誤輸出。我應該怎麼做?另外我知道它有時會有所作爲,php腳本運行在WAMP服務器上。

這裏是我的MIB樹:

enter image description here

回答

0

你的PHP庫需要能夠「解決」您的OID到人類可讀的OID名。您需要研究您的PHP SNMP庫是否以及如何爲其輸出執行此操作。這是您的PHP SNMP庫的一個問題。如果你的圖書館沒有這樣做,那麼你將需要手動做到這一點。你的IReasoning瀏覽器做它的原因是因爲Ireasoning將OID解析爲人類可讀的名字。