python 实现的 snmptrap 接收器
因为网上找到的代码总有一些问题,也取不到需要的数据,所以对代码进行了修改

from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher
from pysnmp.carrier.asynsock.dgram import udp, udp6
from pyasn1.codec.ber import decoder
from pysnmp.proto import api
from pysnmp.proto.rfc1905 import VarBind
import redef pick(varbind):pattern="name=(.*)[\s\S]*value=(.*)"regx=re.compile(pattern)matchs=regx.findall(varbind)if matchs:return matchs[0][0],matchs[0][1]else:return Falsedef cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):while wholeMsg:msgVer = int(api.decodeMessageVersion(wholeMsg))if msgVer in api.protoModules:pMod = api.protoModules[msgVer]else:print('Unsupported SNMP version %s' % msgVer)returnreqMsg, wholeMsg = decoder.decode(wholeMsg, asn1Spec=pMod.Message(),)# print("reqmsg:", reqMsg)# print("wholemsg:",wholeMsg)print('Notification message from %s:%s: ' % (transportDomain, transportAddress))reqPDU = pMod.apiMessage.getPDU(reqMsg)# print("pdu:",reqPDU)varBinds = pMod.apiPDU.getVarBindList(reqPDU)# print("varbinds:",varBinds)for row in varBinds:row: VarBindrow=row.prettyPrint()k,v=pick(row)print("%s:%s" % (k,v))return wholeMsgif __name__ == '__main__':transportDispatcher = AsynsockDispatcher()transportDispatcher.registerRecvCbFun(cbFun)# UDP/IPv4transportDispatcher.registerTransport(udp.domainName, udp.UdpSocketTransport().openServerMode(('0.0.0.0', 162)))# UDP/IPv6transportDispatcher.registerTransport(udp6.domainName, udp6.Udp6SocketTransport().openServerMode(('::1', 162)))transportDispatcher.jobStarted(1)try:transportDispatcher.runDispatcher()except:transportDispatcher.closeDispatcher()raise

python 实现的 snmptrap 接收器相关推荐

  1. python脚本编写_【PyQGIS】编写用于处理框架(QGIS3)的Python脚本

    可以编写可通过QGIS中的Python控制台运行的独立pyqgis脚本.进行一些调整,即可使您的独立脚本通过处理框架运行.这具有几个优点.首先,获取用户输入和写入输出文件要容易得多,因为Process ...

  2. python输入数字字符串_Python笔记—基本数据类型—数字字符串

    数字 int #整型 所有的功能,都在int里 a = 123v= a.bit_length() #软件自带函数联想 print(v)-int 将字符串转换成数字 a= '123' print(typ ...

  3. Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器

    Apache Spark 2.4.0是2.x系列中的第五个版本.此版本增加了屏障执行模式,以便更好地与深度学习框架集成:引入30多个更高阶的内置函数,能够更轻松地处理复杂数据类型:优化K8s集成,同时 ...

  4. python logging模块的作用_Python 日志模块logging分析及使用-2

    本文作为Python日志模块的补充,主要介绍日志回滚RotatingFileHandler和TimedRotatingFileHandler的使用,以及其所带来的问题.Logger对象的日志等级是如何 ...

  5. 在Python中创建单例

    这个问题不是为了讨论是否需要单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式. 在这种情况下,我定义"最pytho ...

  6. python turtle画气球-micro:bit + LoRa 实现气球追踪

    MAKER:Dave Akerman/译:趣无尽 Cherry(转载请注明出处) 虽说 micro:bit 的基本功能相对树莓派等开发板来说并不算丰富,但它的处理器有足够多的闪存和 RAM 来实现一个 ...

  7. python爬虫抓取图片-python网络爬虫源代码(可直接抓取图片)

    在开始制作爬虫前,我们应该做好前期准备工作,找到要爬的网站,然后查看它的源代码我们这次爬豆瓣美女网站,网址为:用到的工具:pycharm,这是它的图标 ...博文来自:zhang740000的博客 P ...

  8. Python错误和异常学习

    一:错误解释 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改 二:异常 执行过程 ...

  9. python PyQt5 Signal类 (Signal类提供了一种以pythonic方式声明和连接Qt信号的方法)(connect()、disconnect()、emit())

    https://doc.qt.io/qtforpython/PySide2/QtCore/Signal.html?highlight=connect#PySide2.QtCore.Signal.con ...

最新文章

  1. R pdf大小_怎样给PDF添加批注并同步到手机里?
  2. java web手动部署_tomcat手动部署web项目的方法
  3. 深入Windows原理杂记
  4. git reset 之后的后悔药
  5. Mysql/Mairadb主从复制
  6. 人类能与人工智能共生吗?马斯克设想的“人脑接口”,是否可行?
  7. 华为方舟编译器开源官网正式上线
  8. 创建私服maven服务
  9. A2DP AVRCP,蓝牙音频协议的兄弟组合(1)
  10. 输入一行数字、数字之间用空格隔开python_Python 实现一行输入多个数字(用空格隔开)...
  11. 机房管理制度(试行)
  12. visual assist x太卡了_河西区专业达格XD7500租赁 X-RAY -哪家好-老友网
  13. 使用C#创建简单的联系人备忘录
  14. 分式化简结果要求_中考分式化简求值题题型归纳
  15. Matlab 常用快捷键
  16. 网页视频播放器-插件
  17. 达索系统推出汽车项目智能看板行业解决方案体验
  18. 计算机配件仓库照片,配件仓库存管理技巧
  19. 割圆术c语言程序设计,组图:千古绝技 中国古代数学家的割圆术
  20. Android 打飞机 小游戏 的实现 - 画面移动 对象封装 碰撞效果

热门文章

  1. 第十届软件杯(民航大数据在线可视化分析系统)
  2. 《Cocos Creator游戏实战》虚拟摇杆实现
  3. 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)[试题学习]
  4. SOA协议DDS和Some/IP对比
  5. 安装软件时内存还有很多却依然提示空间不足的解决办法
  6. 自动控制原理之系统方块图及其化简
  7. 云原生 (Cloud Native) = 微服务 + DevOps + 持续交付 + 容器化 ?
  8. 【计算机网络】一、概论
  9. 科研利器之EndNote x8基础使用教程
  10. OpenWrt之IPTV双线融合教程