我有一台 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)。