首页 > 解决方案 > 使用虚拟数据模拟 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-Request 时,我只得到我要求的这个 OID 在代理上不存在的答案。我通读了许多教程,但它们经常使用 MIB,我目前无法理解。我从来没有看到他们添加任何值..

pysnmp 文档已关闭,因此我无法获得任何真实信息。有人可以给我提示如何创建一个简单的代理吗?

标签: pythonsimulationsnmpagent

解决方案


推荐阅读