gpt4 book ai didi

python - pysnmp 如何使用传入陷阱的 varBinds 内容转发新陷阱?

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:20 24 4
gpt4 key购买 nike

我正在编写一个代码来接收 SNMP v2c 陷阱,将它们存储在数据库中,然后将陷阱转发到另一个 IP。我想确认是否可以使用与传入陷阱关联的 varBinds 变量,更新其内容,并将其用作填充传出陷阱的信息。是否可以仅使用 pysnmp (而不是 snmpfwd)来执行此操作?

我已经尝试使用 varBinds 变量来构建第二个陷阱,但是当脚本尝试发送第二个陷阱时,我总是收到错误。请在下面找到它。这是我用来接收和转发陷阱的代码的一部分。有人可以帮忙吗?谢谢!

from pysnmp.hlapi.asyncore import *
from pysnmp.entity import engine, config
from pysnmp.carrier.asyncore.dgram import udp
from pysnmp.entity.rfc3413 import ntfrcv
from pysnmp import debug
from pysnmp.smi import builder, view, compiler, rfc1902, error

def cbFun(snmpEngine, stateReference, contextEngineId, contextName, varBinds, cbCtx):
execContext = snmpEngine.observer.getExecutionContext('rfc3412.receiveMessage:request')

global mysqlEngine
trapoid=''
val=[]

for x in varBinds:
row = (rfc1902.ObjectType(rfc1902.ObjectIdentity(x[0]), x[1]).resolveWithMib(mibViewController)).prettyPrint().split(' = ')
val.append(row[1]) <-- values to be added to the DB

SendSNMPTrap('public','1.3.6.1.4.1.29172.22.2.0.4', varBinds)
return

def SendSNMPTrap(community,trapoid, varBinds):

global snmpEngine
global mibViewController

sendNotification(
snmpEngine,
CommunityData(community, mpModel=1),
UdpTransportTarget(('10.10.10.10', 162)),
ContextData(),
'trap',
NotificationType(
ObjectIdentity(trapoid)
).addVarBinds(varBinds)
)

'格式错误的对象 ID %s 在 %s:%s' %(值,self.class.name,sys.exc_info()[1]);pyasn1.error.PyAsn1Error:格式错误的对象 ID [('1.3.6.1.4.1.29172.22.2.2.1.1', 100), ('1.3.6.1.4.1.29172.22.2.2.1.7', 'text_tt0'), ( '1.3.6.1.4.1.29172.22.2.2.1.5', 'text_tt3'), ('1.3.6.1.4.1.29172.5.2.0', 100), ('1.3.6.1.4.1.29172.22.2.2.1.9', 'text_tt1'), ('1.3.6.1.4.1.29172.22.2.2.1.10', 'text_tt2'), ('1.3.6.1.4.1.29172.22.2.3', 1)] 在 ObjectName: '>=' 不支持'tuple' 和 'int' 实例之间

最佳答案

应该可以重用varBinds对象来发送TRAP。我认为您应该在将 varBinds 传递给 addVarBinds 时解压它们。 .

即:

 sendNotification(
snmpEngine,
CommunityData(community, mpModel=1),
UdpTransportTarget(('10.10.10.10', 162)),
ContextData(),
'trap',
NotificationType(
ObjectIdentity(trapoid)
).addVarBinds(*varBinds)
)

关于python - pysnmp 如何使用传入陷阱的 varBinds 内容转发新陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58600140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com