可以使用 snmpget 从 table 项中检索一个值

Possible to use snmpget to retrieve one value from table item

伙计们,正在编写脚本以检索 table 对象中的特定 MIB,例如

ltmRouteDomainStatTable OBJECT-TYPE
        SYNTAX SEQUENCE OF LtmRouteDomainStatEntry
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
                "A table containing statistic information of route domains."


LtmRouteDomainStatEntry ::=
        SEQUENCE {
                ltmRouteDomainStatName                                    LongDisplayString,
                ltmRouteDomainStatConnLimit                               Gauge,
                ltmRouteDomainStatConnectionFlowMiss                      Counter64,
                ltmRouteDomainStatClientPktsIn                            Counter64,
                ltmRouteDomainStatClientBytesIn                           Counter64,
.....

我只想要 ltmRouteDomainStatClientPktsIn,但它似乎是不使用数字 OID 的唯一方法是获取整个 table:

snmptable  -v2c -Lo -c xxxx 1.2.3.4  F5-BIGIP-LOCAL-MIB::ltmRouteDomainStatTable
SNMP table: F5-BIGIP-LOCAL-MIB::ltmRouteDomainStatTable

 ltmRouteDomainStatName ltmRouteDomainStatConnLimit ltmRouteDomainStatConnectionFlowMiss ltmRouteDomainStatClientPktsIn ltmRouteDomainStatClientBytesIn ltmRouteDomainStatClientPktsOut ltmRouteDomainStatClientBytesOut ltmRouteDomainStatClientMaxConns ltmRouteDomainStatClientTotConns ltmRouteDomainStatClientCurConns ltmRouteDomainStatClientEvictedConns ltmRouteDomainStatClientSlowKilled ltmRouteDomainStatServerPktsIn ltmRouteDomainStatServerBytesIn ltmRouteDomainStatServerPktsOut ltmRouteDomainStatServerBytesOut ltmRouteDomainStatServerMaxConns ltmRouteDomainStatServerTotConns ltmRouteDomainStatServerCurConns ltmRouteDomainStatServerEvictedConns ltmRouteDomainStatServerSlowKilled
              /Common/0                           0                                    0                            162                           12312                               0                                0                               60                               60                                0                                    0                                  0                        5135356                       570128703                         5106503                        204356528                               60                               60                                0                                    0                                  0

我想也许我可以将索引添加到 snmpget 查询中,但没有成功,例如

snmpget -v2c -Lo -c xxxx 1.2.3.4 F5-BIGIP-LOCAL-MIB::ltmRouteDomainStatClientPktsIn.'/Common/0'

我可以解析 snmptable 输出以获得我想要的单个值...有更简单的方法吗?

是的,您可以通过几种方式做您想做的事:

  1. 如果 table 只有一行,执行

snmpgetnext .... F5-BIGIP-LOCAL-MIB::ltmRouteDomainStatClientPktsIn

  1. 将您的行的索引字符串转换为子 ID 列表,同时考虑 考虑可变长度八位字节字符串编码。如果你走 table 使用 snmpwalk 您应该获得该格式的索引值。然后使用

snmpget ... F5-BIGIP-LOCAL-MIB::ltmRouteDomainStatClientPktsIn.INDICES

其中 INDICES 是子 ID 列表。