(也就是说这些MIB是生产商和设备相关的) PySNMP是一个纯粹用Python实现的SNMP。 用PySNMP的最抽象的API为One-line Applications。 其中有两类API:同步的和非同步的,都在模块pysnmp.entity.rfc3413.oneliner.cmdgen 中实现。 所以在使用的时候为了方便,可以 from pysnmp.entity.rfc3413.oneliner import cmdgen然后用cg = cmdgen.CommandGenerator()来产生一个 下面上个例子是获得设备snmp数据: from pysnmp.entity.rfc3413.oneliner import cmdgen def snmpget(): cg = cmdgen.CommandGenerator
PySNMP 是一个纯粹用Python实现的SNMP,用PySNMP的最抽象的API为One-line Applications,其中有两类API:同步的和非同步的,都在模块pysnmp.entity.rfc3413 192.168.1.101 .1.3.6.1.2.1.25.2.2 HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 2096632 KBytes 首先我们不使用PySNMP range(100): dic = Get_CPU_Info("192.168.1.20") print(dic) time.sleep(1) 我们使用pysnmp 模块来做,安装pysnmp很简单,执行命令pip install pysnmp 即可,安装后使用以下代码执行即可获取到目标数据,获取方式分为两种一种为Get另一种为Walk. from pysnmp.hlapi /site-packages/pysnmp/smi/mibs','pysnmp_mibs'),lexicographicMode=False): if errorIndication
0x00 概览 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库。网上有较多的关于两个库的例子。 0x02 pysnmp测试 pysnmp是用python实现的一套snmp协议的库。其自身提供了对于异步的支持。 pysnmp常用操作 import time import Queue from pysnmp.hlapi.asyncore import * t = time.time() myq = Queue.Queue pysnmp性能较之略差一下。详细分析pysnmp在添加任务(执行getCmd时)消耗了约1.2s,之后的采集约消耗3.3秒。 在增加了oid数,在进行实验。host仍然是198个,oid是42个。 在线程足够多的情况下,netsnmp的效率要明显强于pysnmp。 因为二者都支持可以并行采集多个host,从易用性来说,netsnmp更为简单一些,且netsnmp支持walk功能。
lib/python2.7/dist-packages/cv.py python-pyavm: /usr/lib/python2.7/dist-packages/pyavm/cv.py python-pysnmp4 : /usr/lib/python2.7/dist-packages/pysnmp/entity/rfc3413/ntfrcv.py python-pysnmp4: /usr/share/pyshared /pysnmp/entity/rfc3413/ntfrcv.py python-pysnmp4-doc: /usr/share/doc/python-pysnmp4-doc/examples/v1arch kivy/core/camera/camera_opencv.py python3-pyavm: /usr/lib/python3/dist-packages/pyavm/cv.py python3-pysnmp4 : /usr/lib/python3/dist-packages/pysnmp/entity/rfc3413/ntfrcv.py 4.
首先我们不适用PySNMP模块直接开线程调用看看,该代码如下所示. import os,re,time # 通过SNMP收集主机CPU利用率: 通过SNMP协议,收集目标主机的CPU利用率(百分比), return 0 if __name__ == '__main__': list = Get_Disk_Info("192.168.1.20") print(list) 接下来,我们使用pysnmp 模块来做,安装pysnmp很简单,执行命令pip install pysnmp即可,安装后,使用以下代码执行即可获取到目标数据,网上的那些转载的都是坑,没一个能用的,这个案例是官方案例,可以使用。 from pysnmp.hlapi import * iterator = getCmd(SnmpEngine(), CommunityData('public') # snmpwalk -v 2c -c public 192.168.1.113 .1.3.6.1.2.1.1.5 from pysnmp.hlapi import * class NetSNMP(
这样一看流程就简单许多了,以后再使用snmptrap的时候也可以参考这个处理的流程 0x01 SNMP TRAP流程 SNMP Trap流程可参考这篇文章 0x02 SNMP Trap接受用Python实现 下载 安装pysnmp -4.2.5.tar.gz (md5) https://pypi.python.org/pypi/pysnmp/ 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 test_case_common import * def cbFun(transportDispatcher,
安装 Linux: 建议在linux中安装Pret # pipinstall colorama pysnmp (kali中无需运行此命令)# apt-get install imagemagick ghostscript Windows: # pip install colorama pysnmp# pip install win_unicode_console (windows需要额外安装,否则容易Unicode字符显示不正确
Portal连接设备在”防护与安全”中启用SNMP设置社区字符串(如gc_public)配置TRAP目标地址为星云智控服务器IPModbus设备桥接方案:# SNMP-Modbus桥接脚本示例from pysnmp.entity 设备-->>星云控制器: 确认配置完成支持的自动配置项:社区字符串标准化TRAP目标地址设置MIB视图优化安全策略应用6.2 安全增强模式星云智控的SNMPv3配置:# 自动化配置脚本from pysnmp.hlapi
至于如何实现SNMP拉取,调用不同语言的SNMP包即可,比如GO的"github.com/soniah/gosnmp" 包、PYTHON的pysnmp包,不展开。