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

2024-09-29 23:28:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个代码来接收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”的实例之间不支持


Tags: 代码fromimport信息db错误global陷阱

热门问题