python 实现的 snmptrap 接收器
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 接收器相关推荐
- python脚本编写_【PyQGIS】编写用于处理框架(QGIS3)的Python脚本
可以编写可通过QGIS中的Python控制台运行的独立pyqgis脚本.进行一些调整,即可使您的独立脚本通过处理框架运行.这具有几个优点.首先,获取用户输入和写入输出文件要容易得多,因为Process ...
- python输入数字字符串_Python笔记—基本数据类型—数字字符串
数字 int #整型 所有的功能,都在int里 a = 123v= a.bit_length() #软件自带函数联想 print(v)-int 将字符串转换成数字 a= '123' print(typ ...
- Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器
Apache Spark 2.4.0是2.x系列中的第五个版本.此版本增加了屏障执行模式,以便更好地与深度学习框架集成:引入30多个更高阶的内置函数,能够更轻松地处理复杂数据类型:优化K8s集成,同时 ...
- python logging模块的作用_Python 日志模块logging分析及使用-2
本文作为Python日志模块的补充,主要介绍日志回滚RotatingFileHandler和TimedRotatingFileHandler的使用,以及其所带来的问题.Logger对象的日志等级是如何 ...
- 在Python中创建单例
这个问题不是为了讨论是否需要单例设计模式 ,是否是反模式,还是针对任何宗教战争,而是要讨论如何以最pythonic的方式在Python中最好地实现此模式. 在这种情况下,我定义"最pytho ...
- python turtle画气球-micro:bit + LoRa 实现气球追踪
MAKER:Dave Akerman/译:趣无尽 Cherry(转载请注明出处) 虽说 micro:bit 的基本功能相对树莓派等开发板来说并不算丰富,但它的处理器有足够多的闪存和 RAM 来实现一个 ...
- python爬虫抓取图片-python网络爬虫源代码(可直接抓取图片)
在开始制作爬虫前,我们应该做好前期准备工作,找到要爬的网站,然后查看它的源代码我们这次爬豆瓣美女网站,网址为:用到的工具:pycharm,这是它的图标 ...博文来自:zhang740000的博客 P ...
- Python错误和异常学习
一:错误解释 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改 二:异常 执行过程 ...
- python PyQt5 Signal类 (Signal类提供了一种以pythonic方式声明和连接Qt信号的方法)(connect()、disconnect()、emit())
https://doc.qt.io/qtforpython/PySide2/QtCore/Signal.html?highlight=connect#PySide2.QtCore.Signal.con ...
最新文章
- R pdf大小_怎样给PDF添加批注并同步到手机里?
- java web手动部署_tomcat手动部署web项目的方法
- 深入Windows原理杂记
- git reset 之后的后悔药
- Mysql/Mairadb主从复制
- 人类能与人工智能共生吗?马斯克设想的“人脑接口”,是否可行?
- 华为方舟编译器开源官网正式上线
- 创建私服maven服务
- A2DP AVRCP,蓝牙音频协议的兄弟组合(1)
- 输入一行数字、数字之间用空格隔开python_Python 实现一行输入多个数字(用空格隔开)...
- 机房管理制度(试行)
- visual assist x太卡了_河西区专业达格XD7500租赁 X-RAY -哪家好-老友网
- 使用C#创建简单的联系人备忘录
- 分式化简结果要求_中考分式化简求值题题型归纳
- Matlab 常用快捷键
- 网页视频播放器-插件
- 达索系统推出汽车项目智能看板行业解决方案体验
- 计算机配件仓库照片,配件仓库存管理技巧
- 割圆术c语言程序设计,组图:千古绝技 中国古代数学家的割圆术
- Android 打飞机 小游戏 的实现 - 画面移动 对象封装 碰撞效果
热门文章
- 第十届软件杯(民航大数据在线可视化分析系统)
- 《Cocos Creator游戏实战》虚拟摇杆实现
- 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)[试题学习]
- SOA协议DDS和Some/IP对比
- 安装软件时内存还有很多却依然提示空间不足的解决办法
- 自动控制原理之系统方块图及其化简
- 云原生 (Cloud Native) = 微服务 + DevOps + 持续交付 + 容器化 ?
- 【计算机网络】一、概论
- 科研利器之EndNote x8基础使用教程
- OpenWrt之IPTV双线融合教程