当前位置: 首页 > 知识库问答 >
问题:

是否有任何正确的格式可用于向snmp代理添加上下文名称?

华佐
2023-03-14

我是SNMP上下文的新手。我正在云中设置一个SNMP代理。这是我们从使用上下文名称的snmplabs.com中获得的基本格式。但是问题是当我们在snmpwalk请求中使用上下文名称时,它会给出类似的回复

"SNMPv2-SMI::dod=此MIB视图中没有更多变量(它已超过MIB树的末尾)"

我们遵循格式http://snmplabs.com/pysnmp/examples/v3arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.html

# Serve non-default MIB tree

# Listen and respond to SNMP GET / SET / GETNEXT / GETBULK queries with
# the following options:

#  SNMPv3
#  with USM username usr - md5 - none
#  using alternative set of Managed Objects addressed by
#  contextName: my - context
#  allow access to SNMPv2 - MIB objects (1.3.6.1.2.1)
#  over IPv4 / UDP, listening at 127.0.0.1:161

from pysnmp.entity import engine, config

from pysnmp.entity.rfc3413 import cmdrsp, context

from pysnmp.carrier.asyncore.dgram import udp

from pysnmp.smi import instrum, builder

from pysnmp.proto.api import v2c

snmpEngine = engine.SnmpEngine()

config.addTransport(
    snmpEngine,
    udp.domainName,
    udp.UdpTransport().openServerMode(('127.0.0.1', 161))
)

# SNMPv3/USM setup

# user: usr-md5-none, auth: MD5, priv NONE
config.addV3User(
    snmpEngine, 'usr-md5-none',
    config.usmHMACMD5AuthProtocol, 'authkey1'
)

# Allow full MIB access for each user at VACM
config.addVacmUser(snmpEngine, 3, 'usr-md5-none', 'authNoPriv', (1, 3, 6, 1, 2, 1), (1, 3, 6, 1, 2, 1))

snmpContext = context.SnmpContext(
    snmpEngine
)

# Create an [empty] set of Managed Objects (MibBuilder), pass it to
# Management Instrumentation Controller and register at SNMP Context
# under ContextName 'my-context'
snmpContext.registerContextName(
    v2c.OctetString('my-context'),  # Context Name
    instrum.MibInstrumController(builder.MibBuilder().loadModules)  # Managed Objects
)

# Register SNMP Applications at the SNMP engine for particular SNMP context
cmdrsp.GetCommandResponder(snmpEngine, snmpContext)
cmdrsp.SetCommandResponder(snmpEngine, snmpContext)
cmdrsp.NextCommandResponder(snmpEngine, snmpContext)
cmdrsp.BulkCommandResponder(snmpEngine, snmpContext)

# Register an imaginary never-ending job to keep I/O dispat#cher running forever
snmpEngine.transportDispatcher.jobStarted(1)

# Run I/O dispatcher which would receive queries and send responses
try:
    snmpEngine.transportDispatcher.runDispatcher()
except:
    snmpEngine.transportDispatcher.closeDispatcher()
    raise

snmpwalk -v3 -u usr-md5-none -l authNoPriv -A authkey1  -n my-context 127.0.0.1 .1.3.6

使用上面的snmpwalk时,我们将得到如下输出

SNMPv2-SMI::dod = No more variables left in this MIB View (It is past the end of the MIB tree)

但如果使用以下snmpwalk

snmpwalk -v3 -u usr-md5-none -l authNoPriv -A authkey1 127.0.0.1 .1.3.6

我们将获得输出

SNMPv2-MIB::sysDescr.0 = STRING: PySNMP engine version 4.4.11, Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)]

SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.20408
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (14) 0:00:00.14

SNMPv2-MIB::sysContact.0 = STRING:

SNMPv2-MIB::sysName.0 = STRING: 
SNMPv2-MIB::sysLocation.0 = STRING: 
SNMPv2-MIB::sysServices.0 = INTEGER: 0
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::snmpInPkts.0 = Counter32: 10
SNMPv2-MIB::snmpOutPkts.0 = Counter32: 0
SNMPv2-MIB::snmpInBadVersions.0 = Counter32: 0
SNMPv2-MIB::snmpInBadCommunityNames.0 = Counter32: 0
SNMPv2-MIB::snmpInBadCommunityUses.0 = Counter32: 0
SNMPv2-MIB::snmpInASNParseErrs.0 = Counter32: 0
SNMPv2-MIB::snmpInTooBigs.0 = Counter32: 0
SNMPv2-MIB::snmpInNoSuchNames.0 = Counter32: 0
SNMPv2-MIB::snmpInBadValues.0 = Counter32: 0
SNMPv2-MIB::snmpInReadOnlys.0 = Counter32: 0
SNMPv2-MIB::snmpInGenErrs.0 = Counter32: 0
SNMPv2-MIB::snmpInTotalReqVars.0 = Counter32: 0
SNMPv2-MIB::snmpInTotalSetVars.0 = Counter32: 0
SNMPv2-MIB::snmpInGetRequests.0 = Counter32: 0
SNMPv2-MIB::snmpInGetNexts.0 = Counter32: 0
SNMPv2-MIB::snmpInGetResponses.0 = Counter32: 0
SNMPv2-MIB::snmpInTraps.0 = Counter32: 0
SNMPv2-MIB::snmpOutTooBigs.0 = Counter32: 0
SNMPv2-MIB::snmpOutNoSuchNames.0 = Counter32: 0
SNMPv2-MIB::snmpOutBadValues.0 = Counter32: 0
SNMPv2-MIB::snmpOutGenErrs.0 = Counter32: 0
SNMPv2-MIB::snmpOutSetRequests.0 = Counter32: 0
SNMPv2-MIB::snmpOutGetResponses.0 = Counter32: 0
SNMPv2-MIB::snmpOutTraps.0 = Counter32: 0
SNMPv2-MIB::snmpEnableAuthenTraps.0 = INTEGER: enabled(1)
SNMPv2-MIB::snmpSilentDrops.0 = Counter32: 0
SNMPv2-MIB::snmpProxyDrops.0 = Counter32: 0

因此,要获得上下文名称的相同输出,我应该注意什么更改

共有1个答案

燕俊明
2023-03-14

你有你的MIB填充吗?这一行:

instrum.MibInstrumController(builder.MibBuilder())  # Managed Objects

创建一个空的MIB树并将其注册在my-上下文上下文名称下。除非您在代码的其他地方填充该MIB树,否则这解释了为什么您没有收到任何响应。

如果你这样做:

instrum.MibInstrumController(builder.MibBuilder().loadModules())

pysnmp搜索路径中所有现有的MIB模块都将被加载并注册到这个新的MIB树中。

顺便说一句,整个ContextEngineId配置与ContextName无关。除非出于某种原因需要,否则可以在代码中删除与特定ContextEngineId值相关的所有内容。

 类似资料:
  • 我需要从客户端进程向多个snmp代理发送获取请求。 我已经基于以下URL实现了客户端/代理http://www.jitendrazaa.com/blog/java/snmp/create-snmp-client-in-java-using-snmp4j/http://www.jitendrazaa.com/blog/java/snmp/creating-snmp-agent-server-in-j

  • 问题内容: 我正在使用Sublime Text作为文本编辑器。 有一种用于格式化JavaScript文件的jsFormat,但我找不到用于JSX的格式。 你们如何处理JSX格式? 问题答案: 更新4 检查更漂亮,不是可配置为esformatter,但当前用于格式化一些大型项目(例如React本身) 更新3 检查sublime jsfmt。如果将esformatter- jsx 添加到配置中,然后将

  • 我正在尝试使用snmp4j模拟SNMP代理。我正在向代理注册MOs。下面是代码段: 当启动代理时,我得到了DuplicateInstrationException。请指导我如何注册类。请提供方向。

  • 问题内容: 我想知道对表格使用s 是否可以接受。 严格来说,名称/值对是表格数据,不是吗?表单只是用户可自定义的一组名称/值对。那么在这种情况下使用s 是否正确?还是应该使用CSS样式的? 问题答案: 两者都是 正确的 。 我倾向于使用/ ,因为这样可以进行一些不同的布局,但是对于,我并不感到困惑。 实际上,默认情况下,Django为您提供表格格式的表单。

  • 我最近开始做一个POC来集成java Web应用程序和Dropbox。我发现尽管有一个用于Java的dropbox-core-sdk。但是由于某些原因,dropbox没有为java提供同步库(同步库仅适用于Android/iOS)。 1)我们可以在java Web应用程序中使用android同步api吗?

  • 我正在尝试用Java实现SNMP代理。我使用snmp4j库(http://www.snmp4j.org/)。当前,我的代理在localhost/4700上工作。由于以下请求,我尝试发送snmpget请求: 但我只得到类似“此OID当前不存在这样的实例”的信息。这是我的问题:我不知道如何创建一个实例。我试图在MOTable中添加行,但似乎不起作用。 下面是我实现MOGRoup的类的摘要 但是下面的请