Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问已接收陷阱的varBinds_Python_Pysnmp - Fatal编程技术网

Python 访问已接收陷阱的varBinds

Python 访问已接收陷阱的varBinds,python,pysnmp,Python,Pysnmp,我不知道如何从代码示例中访问varBinds。我可以打印它,但如果我想存储它或传递给方法或类呢 即使我把它存储在课堂上,我也无法进一步访问它 类前置器 定义初始自我: 使用自动生成的engineID和预绑定创建SNMP引擎 到套接字传输调度器 self.snmpEngine=engine.snmpEngine 传输设置 IPv4上的UDP,第一个侦听接口/端口 config.addTransport self.snmpEngine, udp.domainName+1,, udp.udptTran

我不知道如何从代码示例中访问varBinds。我可以打印它,但如果我想存储它或传递给方法或类呢

即使我把它存储在课堂上,我也无法进一步访问它

类前置器 定义初始自我: 使用自动生成的engineID和预绑定创建SNMP引擎 到套接字传输调度器 self.snmpEngine=engine.snmpEngine 传输设置 IPv4上的UDP,第一个侦听接口/端口 config.addTransport self.snmpEngine, udp.domainName+1,, udp.udptTransport.openServerMode'127.0.0.1',162 SNMPv1/2c设置 SecurityName社区名称映射 config.addV1Systemself.snmpEngine,“我的区域”,“公共” 用于接收通知的回调函数 不检查脓毒症局部,脓毒症局部,脓毒症局部 def cbFunself、snmpEngine、stateference、contextEngineId、contextName、, varBinds,cbCtx: 对于varBind中的varBind: oid,值=varBind 陷阱_源=stroid trap_val=intvalue TODO:返回陷阱\源,陷阱\值 def runself: 在SNMP引擎上注册SNMP应用程序 ntfrcv.NotificationReceiverself.snmpEngine,self.cbFun self.snmpEngine.transportDispatcher.jobStarted1此作业永远不会完成 运行I/O调度程序,它将接收查询并发送确认 尝试: self.snmpEngine.transportDispatcher.runDispatcher 除: self.snmpEngine.transportDispatcher.closeDispatcher 提升
您不能从回调函数返回任何内容。因为它的调用者主循环对它的返回值不感兴趣

因此,您应该使用cbCtx或其他一些全局对象(例如dict)将回调函数中接收到的信息传递给应用程序的其他部分。cbCtx对象最初可以传递给NotificationReceiver,然后出现在回调函数中

例如,您可以让一个线程中的通知接收器将接收到的数据推送到cbCtx数据结构中,例如,它可以是队列,然后另一个线程从该队列中弹出项目并处理它们

或者,您也可以直接在回调函数中处理接收到的数据。只要确保它是非阻塞的