Search code examples
snmp

Possible to use snmpget to retrieve one value from table item


Folks, working on a script to retrieve a specific MIB that is in a table object, e.g.

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,
.....

I only want ltmRouteDomainStatClientPktsIn, but it seems the only way to reach it, without using a numeric OID is to get the entire 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

I thought perhaps I might be able to add the index to the snmpget query, but no luck, e.g

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

I can parse the snmptable output to get single value I want ... is there an easier way?


Solution

  • Yes, you can do what you want in a couple of ways:

    1. if the table only has one row, do

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

    1. convert the index string of your row to a list of sub IDs, taking into consideration the variable length octet string encoding. If you walk the table with snmpwalk you should get the index values in that format. Then use

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

    where INDICES is the list of sub IDs.