我有一台 Cisco 交換機,SNMP 代理程式傳回最多 256 個字元長的介面描述 ( ifAlias
)。例如,我收到一個 100 個字元長的介面描述:
$ snmpget -m ./IF-MIB_tmp -M /usr/share/snmp/mibs/ -M
/usr/local/share/snmp/mibs/ -Ov -v 2c -c public switch
IF-MIB::ifAlias.53
STRING: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$
但是,MIB 檔案中的 DisplayString SIZE 為 64 個字元:
$ grep -A 5 -i "^ifalias" ./IF-MIB_tmp /usr/share/snmp/mibs/* /usr/local/shar /snmp/mibs/*
./IF-MIB_tmp:ifAlias OBJECT-TYPE
./IF-MIB_tmp- SYNTAX DisplayString (SIZE(0..64))
./IF-MIB_tmp- MAX-ACCESS read-write
./IF-MIB_tmp- STATUS current
./IF-MIB_tmp- DESCRIPTION
./IF-MIB_tmp- "This object is an 'alias' name for the interface as
--
/usr/share/snmp/mibs/mib-rfc2863a.txt:ifAlias OBJECT-TYPE
/usr/share/snmp/mibs/mib-rfc2863a.txt- SYNTAX DisplayString (SIZE(0..64))
/usr/share/snmp/mibs/mib-rfc2863a.txt- MAX-ACCESS read-write
/usr/share/snmp/mibs/mib-rfc2863a.txt- STATUS current
/usr/share/snmp/mibs/mib-rfc2863a.txt- DESCRIPTION
/usr/share/snmp/mibs/mib-rfc2863a.txt- "This object is an 'alias' name for the interface as
$
我期望snmpget
顯示使用 DisplayString SIZE 參數定義的字元數,例如前 64 個“x”字元。 DisplayString SIZE 會影響輸出snmpget
嗎?如果是的話,那又如何呢?或者 DISPLAY-HINT 參數是唯一真正改變 SNMP GetResponse 值輸出的參數嗎?
答案1
客戶端 MIB 中的資訊不會也不應該影響它從伺服器/交換器接收到的值。snmpget
只是傳回 Cisco 交換器 SNMP 代理程式提供的內容。在這種情況下,MIB 主要是指導原則:只要 Cisco 的實作符合 DisplayString 的 SMIv2 定義(長度可以是 0..255 之間的任意值),Cisco 就可以自由地實現其 MIB(請參閱https://www.rfc-editor.org/rfc/rfc2579)。這也是 RFC 2863 的標準(參見https://www.rfc-editor.org/rfc/rfc2863)。