- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用两个不同的上下文名称来实现一个 snmp 代理。我得到了一些示例程序。这是我的代理端代码的样子。我从 snmplabs.com 得到的.我试图实现它,但在执行 snmpwalk 时遇到了一些错误。
"""
| $ snmpwalk -v3 -u usr-md5-none -l authNoPriv -A authkey1 -n context-a 127.0.0.1 .1.3.6
| $ snmpwalk -v3 -u usr-md5-none -l authNoPriv -A authkey1 -n context-b 127.0.0.1 .1.3.6
""" #
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
import datetime
from pysnmp.smi import exval
# Create SNMP engine
snmpEngine = engine.SnmpEngine()
# Transport setup
# UDP over IPv4
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))
# Create an SNMP context with default ContextEngineId (same as SNMP engine ID)
snmpContext = context.SnmpContext(snmpEngine)
class EchoMibInstrumController(instrum.AbstractMibInstrumController):
def readVars(self, varBinds, acInfo=(None, None)):
retItem = []
print ('varbinds', varBinds)
for ov in varBinds:
if str(ov[0]) == '1.3.6.1.2.1.1.1.0':
currentDT = datetime.datetime.now()
retItem.extend([(ov[0], v2c.OctetString('Hello World! It\'s currently: %s' % str(currentDT)))])
elif str(ov[0]) == '1.3.6.1.2.1.1.1.1':
retItem.extend([(ov[0], v2c.OctetString('You queried walk OID %s' % ov[0]))])
else:
retItem.extend([(ov[0], v2c.OctetString('You queried readVars OID %s' % str(currentDT)))])
return retItem
def readNextVars(self, varBinds, acInfo=(None, None)):
retItem = []
print ('Next varbinds', varBinds)
for ov in varBinds:
if str(ov[0]) == '1.3.6.1.2.1.1.1.0':
currentDT = datetime.datetime.now()
retItem.extend([(ov[0], v2c.OctetString('Hello World! It\'s currently: %s' % str(currentDT)))])
elif str(ov[0]) == '1.3.6.1.2.1.1.1.1':
retItem.extend([(ov[0], v2c.OctetString('You queried walk OID %s' % ov[0]))])
else:
currentDT = datetime.datetime.now()
retItem.extend([(ov[0], v2c.OctetString('You queried readNextVars OID %s' % str(currentDT)))])
return retItem
mibBuilder = snmpContext.getMibInstrum().getMibBuilder()
# mibInstrum = instrum.MibInstrumController(mibBuilder)
MibScalar, MibScalarInstance = mibBuilder.importSymbols(
'SNMPv2-SMI', 'MibScalar', 'MibScalarInstance'
)
class MyStaticMibScalarInstance(MibScalarInstance):
def getValue(self, name, idx):
currentDT = datetime.datetime.now()
return self.getSyntax().clone(
'Hello World! It\'s currently: ' + str(currentDT)
)
mibBuilder.exportSymbols(
'__MY_MIB', MibScalar((1, 3, 6, 1, 2, 1, 1, 1), v2c.OctetString()),
MyStaticMibScalarInstance((1, 3, 6, 1, 2, 1, 1, 1), (0,), v2c.OctetString())
)
# Create multiple independent trees of MIB managed objects (empty so far)
mibTreeA = EchoMibInstrumController()
mibTreeB = instrum.MibInstrumController(builder.MibBuilder())
# Register MIB trees at distinct SNMP Context names
snmpContext.registerContextName(v2c.OctetString('context-a'), mibTreeA)
snmpContext.registerContextName(v2c.OctetString('context-b'), mibTreeB)
oid, val = (), None
# logging.debug('done')
# 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 dispatcher 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 这样的时候
snmpwalk -v3 -u usr-md5-none -l authNoPriv -A authkey1 -n context-a 192.168.2.233 .1.3.6
它给出的回复是
SNMPv2-SMI::dod = STRING: "You queried readNextVars OID 2019-11-21 19:18:22.566000"
Error: OID not increasing: SNMPv2-SMI::dod
>= SNMPv2-SMI::dod
所以我怀疑我做错了什么以及如何增加这个 OID?
最佳答案
您的服务器(代理)不应返回小于或等于 GETNEXT/GETBULK 命令到达的 OID。
使用您的代码,确保 readNextVars
始终返回递增的 OID。
SNMP 管理器检查该条件,否则管理器-代理对可能会进行无休止的交换。
关于python - 错误:OID 未增加:SNMPv2-SMI::dod,如何增加 OID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58977166/
我正在发送 SNMP getBulkRequest ,使用基于一些 3rd 方库(如 agent++、snmp++ 等)的专有 SNMP 浏览器,具有多个 OID,例如 .1.3.6.1.2.1.1.
我正在尝试使用两个不同的上下文名称来实现一个 snmp 代理。我得到了一些示例程序。这是我的代理端代码的样子。我从 snmplabs.com 得到的.我试图实现它,但在执行 snmpwalk 时遇到了
我尝试创建自定义 SNMP oid(和脚本)。 我将以下行添加到 snmpd.conf(并重新启动服务): pass .1.3.6.1.3.2 /bin/myscript.sh . cat myscr
我正在编写一个脚本,该脚本将监视来自 nagios 的特定主机上的流量。我已经研究了一些已经制作的脚本并收集了几乎所有我需要做的信息但是我在识别流量所需的 OID 时遇到了问题。我想使用 IF-MIB
我正在寻找有关 SNMP IOD 返回值的文档。例如,MIB IBM-SYSTEM-HEALTH-MIB 1.3.6.1.4.1.2.6.159.1.1.30 ,它提供有关温度、电压和风扇状态的信息。
我正在寻找有关 SNMP IOD 返回值的文档。例如,MIB IBM-SYSTEM-HEALTH-MIB 1.3.6.1.4.1.2.6.159.1.1.30 ,它提供有关温度、电压和风扇状态的信息。
在 PL/pgSQL 中,我有一个可能包含也可能不包含 oid 的列。我需要检测它是否存在。 目前我是这样做的: select oidtext from t into x where name =
我已经编写了一个扩展 netsnmp 的自定义 SNMPV2C 代理(agentx 协议(protocol)),截至目前,我允许对 snmpd.conf 中的所有内容进行查看访问,如下所示 view
我正在使用以下 URL 尝试登录我的 Azure ad B2C 帐户: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
这个问题已经有答案了: How to find counters of printers through SNMP (1 个回答) 已关闭 9 年前。 我目前正在开发一个应用程序,该应用程序涉及通过
我正在尝试让 mongodb 查询正常工作。集合的格式如下: { "_id": { "$oid": "54651022bffebc03098b4567" }, "browser": "ie",
您能描述一下包含 OID 的利弊吗? (通常是数据库行标识符)在 POJO 中在你的模型中代表一个实体? 事实上,我不是在谈论与 equals/hashcode 等相关的问题,我应该更好地描述我的问题
我有一个奇怪的案例,我不知道它是怎么发生的。 这是我的 table : id date amount 其中 id 不能为 NULL 并且会自动增加。 去年有人系统造成如下情况: OID
是否可以从我知道其 OID 的表中进行选择?有点像 select * from 123456::regclass 我知道我可以通过构造一个动态查询在一个函数中完成它,但我不能直接这样做似乎很奇怪——我
我对 PostgreSQL 的表 oid 有疑问。我创建一个表。 oid 为 24622 (-rw-------- 1 postgres postgres 8192 11 月 29 日 17:45 2
是否可以使用 oid 数据类型作为主键? CREATE TABLE "Test" ( id oid NOT NULL DEFAULT nextval('"Test_id_seq"'::regcla
我想检查 PostgreSQL 中 OID 对象的实际大小。在 PgAdmin 中我只能看到数字。如何显示实际尺寸? 最佳答案 尝试 select octet_length(lo_get(file))
正如在 issue#2217 中所写的那样,我想设计一个函数,它在第一个输出参数中返回一个 oid 列表。 我应该: 将 oid 列表作为指向指针的指针返回? int git_commit_tree_
我找到了一个很棒的 SSL 库,它很容易理解(对我来说),更重要的是,它很容易拆开,以便获得我想使用的加密原语。 但是有一件事我不明白: //HMAC with SHA-256 OID (1.2.84
我正在编写 Python 代码,其中用户以下列任何形式输入 SNMP OID: 1.3.6.1.2.1.90.1.2 internet.2.1.90.1.2 我希望我的代码将 internet 解析为
我是一名优秀的程序员,十分优秀!