我正在编写一个代码来接收snmpv2c陷阱,将它们存储在DB中,然后将陷阱转发到另一个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.类名称,系统exc\U信息()[1]) ;pyasn1。error.pyasn1错误畸形的对象ID[('1.3.6.6.6.1.4.1.1.1.1.1.1、100,('1.3.6.6.6.6.1.1.1.1.1.1.1.1.1.1.2.2.2.2.2.3.6.6.6.1.1.4.1.1.1.1.1.1、100)、100,('1.3.3.3.3.3.6.6.6.6.6.6.6.6.6.6.6.6.1.1.1.1.1.1.1.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1 1.9、1.9、1.9、文本‘1.9’’'''''''''''''''''',,文本“,('1.3.6.1.4.1.29172.22.2.3',1) ]在ObjectName:“>;”在“tuple”和“int”的实例之间不支持
目前没有回答
相关问题 更多 >
编程相关推荐