Как я могу получить количество клиентов из AP Cisco и сохранить его в переменной?

Я надеюсь, что вы можете мне помочь. Цель состоит в том, чтобы получить количество клиентов, которые подключились к точке доступа с помощью pysnmp, я думаю, что я близок, я знаю, что должен использовать, вероятно, pyasn1, но я получаю часть, которая дает мне следующая ошибка:

('---------->', DisplayString ('', subtypeSpec = ConstraintsIntersection (ConstraintsIntersection (ConstraintsIntersection (ConstraintsIntersection (), ValueSizeConstraint (0, 255)), ValueSizeConstraint (0, 255))))

Мой код такой:

from pysnmp.hlapi import *
from pysnmp.proto import rfc1905

setcommunity = "public"
host = "192.168.1.51"
oid = '1.3.6.1.4.1.1.4.1.14179.2.1.1.1.38'
ssid = "Cisco1852i"
snmp_engine = SnmpEngine()

#this function gets the interface status of the cisco Switch

def show_apClients():
       clients = nextCmd (snmp_engine,
               CommunityData(setcommunity),
               UdpTransportTarget((host, 161)),
               ContextData(),

       ObjectType(ObjectIdentity('SNMPv2-SMI', 'mib-2', '1.3.6.1.4.1.14179.2.1.1.1.38')))
       errorIndication, errorStatus, errorIndex, varBinds = next(clients) 
       numberClients = varBinds[0][1]
       print("----------->", numberClients)
       return numberClients

nClients = show_apClients()

print(".....------->", nClients)

Я думаю, что с OID, MIB и остальными все в порядке, потому что я через команду:

"sudo snmpwalk.py -v 2c -c public 192.168.1.51 1.3.6.1.4.1.14179.2.1.4.1.7 | wc -l"

или же

"sudo snmpwalk.py -v 2c -c public 192.168.1.51 1.3.6.1.4.1.14179.2.1.1.18" Я могу получить в командной строке количество клиентов

1 ответ

Если вы хотите скопировать эту команду Net-SNMP с помощью pysnmp:

snmpwalk.py -v 2c -c public 192.168.1.51 1.3.6.1.4.1.14179.2.1.4.1.7 | wc -l

тогда я думаю, что вы должны сделать что-то вроде этого:

def show_apClients():
    clients = nextCmd(
        snmp_engine,
        CommunityData(setcommunity),
        UdpTransportTarget((host, 161)),
        ContextData(),
        ObjectType(ObjectIdentity('1.3.6.1.4.1.14179.2.1.4.1.7')),
        lexicographicMode=True
    )

    # this iterates over generator
    numberClients = len(tuple(clients))
    print("----------->", numberClients)
    return numberClients

Идея в том, что вы позволите pysnmp пройти 1.3.6.1.4.1.14179.2.1.4.1.7 ответвление и возвращает количество узлов (строк) под этим префиксом OID. Я предполагаю, что это отражает количество пользователей, связанных с AP.

Другие вопросы по тегам