用虚拟数据模拟SNMP代理

时间:2020-11-05 14:43:11

标签: python simulation snmp agent

我想用三个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文档已关闭,因此我无法获得任何真实信息。有人可以给我提示如何创建一个简单的代理吗?

0 个答案:

没有答案