Имитация SNMP-агента с фиктивными данными

#python #simulation #snmp #agent

#python #Симуляция #snmp #агент

Вопрос:

Я хочу смоделировать простое устройство с тремя идентификаторами OID. У меня еще нет MIB, только OID. Я в основном хочу воссоздать устройство на Python для целей тестирования. Поэтому я создал простой агент с помощью pysnmp:

 from pysnmp.hlapi import SnmpEngine
from pysnmp.entity import engine, config
from pysnmp.entity.rfc3413 import cmdrsp, context
from pysnmp.carrier.asynsock.dgram import udp
from pysnmp.smi import instrum
from pysnmp.proto.api import v2c

snmpEngine = SnmpEngine()

config.addSocketTransport(
    snmpEngine,
    udp.domainName,
    udp.UdpTransport().openServerMode(('127.0.0.1', 161))
)
    
config.addV3User(
    snmpEngine, 'goldrush'
)

config.addVacmUser(snmpEngine, 3, 'usr-md5-des', 'authPriv',
                    (1, 4, 1, 2, 3, 4), (1, 4, 1, 2, 3, 4))

snmpContext = context.SnmpContext(snmpEngine)

class EchoMibInstrumController(instrum.AbstractMibInstrumController):
    def readVars(self, vars, acInfo=(None, None)):
        return vars

snmpContext.registerContextName(
    v2c.OctetString('my-context'),  # Context Name
    EchoMibInstrumController()  # Management Instrumentation
)

cmdrsp.GetCommandResponder(snmpEngine, snmpContext)
snmpEngine.transportDispatcher.jobStarted(1)
try:
    snmpEngine.transportDispatcher.runDispatcher()
except:
    snmpEngine.transportDispatcher.closeDispatcher()
    raise
  

Но я не понимаю, где я могу передать в него фиктивные данные — когда я отправляю GET-запрос, я получаю только ответ, что этот OID, который я запрашиваю, не существует в агенте.
Я прочитал много руководств, но часто они используют MIB, которые я пока не могу понять. Я никогда не вижу, чтобы они добавляли какие-либо значения..

Документ pysnmp не работает, поэтому я не могу получить никакой реальной информации. Может кто-нибудь дать мне подсказку, как создать простой агент?

Комментарии:

1. Из-за отсутствия ответов вы можете понять, что это не тривиальное усилие. Если вы разбираетесь в SNMP, потребуется человеко-недели (1 или 2), чтобы создать это с использованием open-source с нуля. Существуют коммерческие симуляторы SNMP (например, наш), которые могут дать вам более высокую рентабельность инвестиций.

2. Вау, похоже, snmp совсем не так прост. В настоящее время я пытаюсь реализовать свою идею с помощью snmpd и smp-перехода к моему скрипту python.

3. Это 15-минутное упражнение с нашим симулятором, после того как вы определили свой MIB. Что вы получаете в результате этих усилий, так это возможность изменять ваши данные во время выполнения, сбрасывать симуляцию в любой момент, тривиальную масштабируемость в количественном (количество агентов) и качественном направлениях (объекты MIB) и т. Д.