在这样一个简单的SNMP表mib-2.interfaces.ifTable
, ifIndex
是表的索引,所以你读ifIndex
0.1(即读的直接子节点值ifIndex
),以获得该表的第一行的索引。 够简单。
但它不是像那样明显mib-2.ip.ipRouteTable
。 在这种情况下ipRouteIfIndex
是索引列。 它定义为INTEGER一样ifIndex
了。 但是,您无法读取直接子节点(即ifIndex
0.0是一个直接子),而是需要阅读ifIndex.0.0.0.0
得到的值。 那么,如何知道如何找到价值时,它不是索引列的直接子?
有一些概念,我不理解。 (可能有与事实SNMP对象由分隔做。但这样是IP地址,我不能告诉你怎么认识的差异)。
请注意,您必须在这种特殊情况下多个索引的表。
事实是,你不能直接读取表项snmp-get
服务,因为该指数是动态的(并且,作为结果,OID地址)。 但是你可以发现价值观snmp-get-next
(V1)和snmp-get-bulk
(V2)服务。
例如,您可以阅读指数(并将其存储供以后查询表中的项目),或直接读取表的项目:
- 你问
snmp-get-next
对IP-MIB :: ipAdEntNetMask - 答复将是IP-MIB :: ipAdEntNetMask.172.16.38.42 IPV4 255.255.0.0
- (所以:第一个索引在这种情况下172.16.38.42!)
- 你迭代,并要求IP-MIB之后,下一个值:: ipAdEntNetMask.172.16.38.42
- 答复将是IP-MIB :: ipAdEntNetMask.172.16.11.43 IPV4 255.255.0.0
- 等等。直到有没有其他的价值,或者价值不在同一棵树
服务snmp-get-bulk
将使您能够直接以这种方式查询的N值。
看看NET-SNMP的 snmptable
,做的桌子好工作: http://net-snmp.sourceforge.net/wiki/index.php/TUT:snmptable