利用Python查询H3C网络设备示例,运维用了它,都称赞!

简介: 利用Python查询H3C网络设备示例,运维用了它,都称赞!

pysnmp 文档:官方文档,查看该模块所有的使用方法

h3c mib 库:华三官方提供的设备 MIB 值

mib 浏览器:可以用来查看 MIB OID 节点

基础环境

  • Windows 10
  • python 3.8
  • pysnmp 4.4.12
  • HCL

网络拓扑


配置信息

路由器配置

路由器开启了 v2c 和 v3 两个版本来进行实验

# snmp-agent snmp-agentcommunitywritesimpleprivate snmp-agentcommunityreadsimplepublic snmp-agentsys-infoversionv2cv3 snmp-agentgroupv3netdevopsauthentication snmp-agenttarget-hosttrapaddressudp-domain192.168.56.102paramssecuritynamepublic snmp-agentusm-userv3adminnetdevopssimpleauthentication-modemd5Admin@h3cprivacy-modeaes128Admin@h3c snmp-agenttrapenable #

代码示例

#导入高层API frompysnmp.hlapiimport* #初始化引擎 engine=SnmpEngine() #选择SNMP协议,v1和v2c只用团体字,使用CommunityData类实例化 #SNMPv1 #communityData=CommunityData('public',mpModel=0) #SNMPv2c communityData=CommunityData('public',mpModel=1) #如果是v3,则需要用户凭证,使用UsmUserData类实例化,认证和加密算法与上面设备配置相对应 userData=UsmUserData( userName='admin', authKey='Admin@h3c', privKey='Admin@h3c', authProtocol=usmHMACMD5AuthProtocol, privProtocol=usmAesCfb128Protocol, ) #配置目标主机 target=UdpTransportTarget(('192.168.56.20',161)) #实例化上下文对象 context=ContextData() defgetSysName(target): # ObjectIdentity 类负责 MIB 对象的识别。 #指定要查询的OID对象或名称 sysname=ObjectIdentity("1.3.6.1.2.1.1.5.0") sysname1=ObjectIdentity('SNMPv2-MIB','sysName',0) #使用ObjectType类初始化查询对象 obj1=ObjectType(sysname) #使用getCMD方法进行查询,返回结果是一个迭代器,需要使用next()来取值 #传递的参数均为为上面定义的变量,以v2c为例(如果是v3,communityData替换为userData) g=getCmd(engine,communityData,target,context,obj1) #取值 _,_,_,result=next(g) #打印输出 foriinresult: print(i) defgetIfaceList(target): """ 这个函数是查询接口列表,和上面查询sysName的区别是使用了nextCmd来获取一个MIB子树的全部内容 主要是`lexicographicMode=False`参数,默认为`True`,会一直查询到 MIB 树结束。 """ #接口列表的OID值 ifaceListOid=ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.2')) g=nextCmd(engine,userData,target,context,ifaceListOid,lexicographicMode=False) #手动迭代并输出内容,并进行迭代器终止的判断 try: whileTrue: errorIndication,errorStatus,errorIndex,varBinds=next(g) forifaceinvarBinds: print(iface) exceptStopIteration: print('Getinterfacelistdone.') getSysName(target) print('============================') getIfaceList(target)

上述代码输出内容如下,可以根据实际需求,对函数的返回内容进行处理,为方便实验,都使用了 print 来查看结果:

PSC:\python\netdevops>python"c:\python\netdevops\pysnmp_demo.py" SNMPv2-MIB::sysName.0=R1 ============================ SNMPv2-SMI::mib-2.2.2.1.2.1=GigabitEthernet0/0 SNMPv2-SMI::mib-2.2.2.1.2.2=GigabitEthernet0/1 SNMPv2-SMI::mib-2.2.2.1.2.3=GigabitEthernet0/2 SNMPv2-SMI::mib-2.2.2.1.2.4=Serial1/0 SNMPv2-SMI::mib-2.2.2.1.2.5=Serial2/0 SNMPv2-SMI::mib-2.2.2.1.2.6=Serial3/0 SNMPv2-SMI::mib-2.2.2.1.2.7=Serial4/0 SNMPv2-SMI::mib-2.2.2.1.2.8=GigabitEthernet5/0 SNMPv2-SMI::mib-2.2.2.1.2.9=GigabitEthernet5/1 SNMPv2-SMI::mib-2.2.2.1.2.10=GigabitEthernet6/0 SNMPv2-SMI::mib-2.2.2.1.2.11=GigabitEthernet6/1 SNMPv2-SMI::mib-2.2.2.1.2.129=NULL0 SNMPv2-SMI::mib-2.2.2.1.2.130=InLoopBack0 SNMPv2-SMI::mib-2.2.2.1.2.131=Register-Tunnel0 Getinterfacelistdone.
相关文章
|
10天前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
【10月更文挑战第7天】金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
23 4
|
9天前
|
运维 Linux Apache
Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例
【10月更文挑战第8天】本文介绍了Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例。Puppet通过定义资源状态和关系,确保系统配置始终如一,支持高效管理基础设施。文章详细讲解了Puppet的安装步骤、配置方法及DSL语言示例,帮助读者快速掌握Puppet的使用技巧。
29 2
|
3天前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
|
7天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
22 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
5天前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
13 0
|
8天前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
13 0
|
10天前
|
SQL 前端开发 Python
基于python-django的neo4j人民的名义关系图谱查询系统
基于python-django的neo4j人民的名义关系图谱查询系统
20 0
|
10天前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
27 0
|
10天前
|
Python
Python中tqdm模块的常用方法和示例
`tqdm` 是一个快速、可扩展的Python进度条库,适用于长循环中添加进度提示。通过封装迭代器 `tqdm(iterator)`,可以轻松实现进度显示。支持自定义描述、宽度及嵌套进度条,适用于多种迭代对象。在Jupyter notebook中,可自动调整显示效果。
19 0
|
10天前
|
Python
Python中threading模块的常用方法和示例
Python 的 `threading` 模块提供了多线程编程的能力,允许同时执行多个线程。主要类包括 `Thread`、`Lock` 和 `Condition`。`Thread` 类用于创建和管理线程,`Lock` 用于同步线程,防止资源竞争,`Condition` 用于线程间协调。本文介绍了这些类的常用方法及示例代码,帮助你更好地理解和使用多线程编程。
19 0

热门文章

最新文章