Snmp 解码ifIndex不会返回任何值

Snmp 解码ifIndex不会返回任何值,snmp,Snmp,我正在设置4个Westermo交换机,因此我正在用C语言进行一些软件更改,以解码MIB数据包。我正在为此使用IReasoning MIB浏览器(RFC 1213) 我试图从ifIndex(.1.3.6.1.2.1.2.2.1.1)获取信息,但不幸的是,当我尝试解码此OID时,我没有获得任何数据/值。我希望得到1,2,3,4409640974098等数据,这些数据表示交换机的端口号 但是,我能够解码其他OID,例如sysDescr、sysUpTime、sysName、sysLocation、ifN

我正在设置4个Westermo交换机,因此我正在用C语言进行一些软件更改,以解码MIB数据包。我正在为此使用IReasoning MIB浏览器(RFC 1213)

我试图从ifIndex(.1.3.6.1.2.1.2.2.1.1)获取信息,但不幸的是,当我尝试解码此OID时,我没有获得任何数据/值。我希望得到1,2,3,4409640974098等数据,这些数据表示交换机的端口号

但是,我能够解码其他OID,例如sysDescr、sysUpTime、sysName、sysLocation、ifNumber、ifOperStatus

尽管iReasoning MIB Browser在双击或选择在表视图中查看时会显示此信息,但是否还需要在C语言中执行任何其他检查(我错过了这些检查)


请告知。

适用于我,在我桌上的Lynx210上,使用以下命令

snmpwalk -v2c -r5 -t3 -cpublic 192.168.2.200 1.3.6.1.2.1.2.2
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.17 = INTEGER: 17
IF-MIB::ifIndex.18 = INTEGER: 18
IF-MIB::ifIndex.4096 = INTEGER: 4096
IF-MIB::ifIndex.4097 = INTEGER: 4097
IF-MIB::ifIndex.4098 = INTEGER: 4098
IF-MIB::ifIndex.4099 = INTEGER: 4099
IF-MIB::ifIndex.4100 = INTEGER: 4100
IF-MIB::ifIndex.4101 = INTEGER: 4101
IF-MIB::ifIndex.4102 = INTEGER: 4102
IF-MIB::ifIndex.4103 = INTEGER: 4103
IF-MIB::ifIndex.4104 = INTEGER: 4104
IF-MIB::ifIndex.4105 = INTEGER: 4105

您使用的是SNMP get还是SNMP walk?Get用于获取标量值,但ifIndex是一个表,因此必须使用walk<代码>iIndex的值(按标准)可能与端口号不匹配。当然,供应商甚至可能不看标准。@user1793963:谢谢您指出这一点。我使用Get命令来解释我的问题。另外,使用ifIndex引用接口/端口通常是脆弱的。最好使用端口标签(WeOS)或接口名称。正如您可能已经注意到的,WeOS端口(第2层)以4096的ifIndex开始,常规接口(第3层)以1(环回)开始。然后,根据您是否在运行时更改配置,您将获得底层Linux内核枚举的第3层接口的不同iIndex。