python pysnmp使用
SNMP标准引入一组ASN.1语言元素,称之为SMI(Structure of Management Information)。由SMI描述的相互关联的被管对象(Managed Objects)组成MIB(Management Information Base)模块。
核心MIB中经常用到的Managed Objects成为SNMP标准的一部分。剩下的MIB一般由设备生产商在其设备中创建。(也就是说这些MIB是生产商和设备相关的)
PySNMP是一个纯粹用Python实现的SNMP。
用PySNMP的最抽象的API为One-line Applications。其中有两类API:同步的和非同步的,都在模块pysnmp.entity.rfc3413.oneliner.cmdgen 中实现。
所以在使用的时候为了方便,可以
1 2 3 4 5 | from pysnmp.entity.rfc3413.oneliner import cmdgen 然后用 cg = cmdgen.CommandGenerator() 来产生一个CommandGenerator对象, 以后调用cg的getCmd等方法来获取或者设置网络设备信息。 |
getCmd()需要三个参数:
1.cmdgen.CommunityData() ##社区信息 传入三个数据,安全my-agent、社区名public、snmp协议版本,之间用逗号隔开,例如 cmdgen.CommunityData('my-agent', 'public', 1)
2.cmdgen.UdpTransportTarget() ##通道参数,传入一个元组,包含主机IP/域名和端口,例如:cmdgen.UdpTransportTarget(('192.168.70.237', 161)
3. OID ##mib值,例如 '.1.3.6.1.4.1.1800.5.13.2'
注意:三个参数之间用 ","隔开。
下面上个例子是获得设备snmp数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from pysnmp.entity.rfc3413.oneliner import cmdgen def snmpget(): cg = cmdgen.CommandGenerator() ##获得CommandGenerator对象 errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd( #0代表v1,1代表v2c cmdgen.CommunityData( 'my-agent' , 'public' , 1 ), ##社区信息,my-agent ,public 表示社区名,1表示snmp v2c版本,0为v1版本 cmdgen.UdpTransportTarget(( '192.168.70.237' , 161 )), ##这是传输的通道,传输到IP 192.168.70.237, 端口 161上(snmp标准默认161 UDP端口) '.1.3.6.1.4.1.1800.5.13.2' ##传送的OID,个人认为MIB值 ) print str (varBinds[ 0 ][ 1 ]); ##varBinds返回是一个stulp,含有MIB值和获得值 def runit(loop = 1 ): for i in range (loop): snmpget() #print i if __name__ = = "__main__" : runit(loop = 1 ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2019-07-05 memcached命令行、Memcached数据导出和导入
2019-07-05 Memcache 查看列出所有key方法
2018-07-05 对于nginx配置文件中的fastcgi_param的配置错误
2018-07-05 nginx的location、root、alias指令用法和区别