-->

类型ip地址的读SNMP对象指数(Reading SNMP Object index of type

2019-09-22 11:33发布

在这样一个简单的SNMP表mib-2.interfaces.ifTableifIndex是表的索引,所以你读ifIndex 0.1(即读的直接子节点值ifIndex ),以获得该表的第一行的索引。 够简单。

但它不是像那样明显mib-2.ip.ipRouteTable 。 在这种情况下ipRouteIfIndex是索引列。 它定义为INTEGER一样ifIndex了。 但是,您无法读取直接子节点(即ifIndex 0.0是一个直接子),而是需要阅读ifIndex.0.0.0.0得到的值。 那么,如何知道如何找到价值时,它不是索引列的直接子?

有一些概念,我不理解。 (可能有与事实SNMP对象由分隔做。但这样是IP地址,我不能告诉你怎么认识的差异)。

Answer 1:

请注意,您必须在这种特殊情况下多个索引的表。

事实是,你不能直接读取表项snmp-get服务,因为该指数是动态的(并且,作为结果,OID地址)。 但是你可以发现价值观snmp-get-next (V1)和snmp-get-bulk (V2)服务。

例如,您可以阅读指数(并将其存储供以后查询表中的项目),或直接读取表的项目:

  • 你问snmp-get-nextIP-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



文章来源: Reading SNMP Object index of type IPAddress