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