利用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.
相关文章
|
20天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
71 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
20天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
68 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
20天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
45 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
16天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
29 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
12天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
73 5
|
12天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
54 5
|
15天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
15天前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
51 4
|
14天前
|
传感器 物联网 人机交互
物联网:物联网,作为新一代信息技术的重要组成部分,通过智能感知、识别技术与普适计算等通信感知技术,将各种信息传感设备与互联网结合起来而形成的一个巨大网络,实现了物物相连、人物相连,开启了万物互联的新时代。
在21世纪,物联网(IoT)作为新一代信息技术的核心,正以前所未有的速度重塑生活、工作和社会结构。本文首先介绍了物联网的概念及其在各领域的广泛应用,强调其技术融合性、广泛的应用范围以及数据驱动的特点。接着,详细阐述了物联网行业的现状和发展趋势,包括政策支持、关键技术突破和应用场景深化。此外,还探讨了物联网面临的挑战与机遇,并展望了其未来在技术创新和模式创新方面的潜力。物联网行业正以其独特魅力引领科技发展潮流,有望成为推动全球经济发展的新引擎。
|
14天前
|
存储 Python
深度剖析:Python里字典树Trie的构建与查询,让你的代码更优雅!
在编程的世界里,数据结构的选择往往直接决定了程序的效率和可读性。今天,我们将深入探索一种高效处理字符串搜索与匹配的数据结构——字典树(Trie),也称作前缀树或单词查找树。通过Python实现Trie树,我们将看到它如何优雅地解决一系列字符串相关的问题,并提升代码的整体质量。
16 2