利用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.
相关文章
|
11月前
|
传感器 边缘计算 运维
AR 虚实叠加技术在工业设备运维中的实现流程方案
AR技术通过虚实信息融合,实现工业设备参数可视化、故障立体化、操作直观化,提升运维效率与精度。结合物联网与数字孪生,打造智能运维新范式。
|
存储 运维 API
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
260 1
|
9月前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
366 4
|
10月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
266 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
9月前
|
传感器 人工智能 运维
拔俗AI巡检系统:让设备“会说话”,让隐患“早发现”,打造更安全高效的智能运维
AI巡检系统融合AI、物联网与大数据,实现设备7×24小时智能监测,自动识别隐患并预警,支持预测性维护,提升巡检效率5倍以上,准确率超95%。广泛应用于工厂、电力、交通等领域,推动运维从“被动响应”转向“主动预防”,降本增效,保障安全,助力数字化转型。(238字)
1155 0
|
12月前
|
机器学习/深度学习 传感器 运维
设备总是坏才修?你落伍啦,预测性运维才是王炸!
设备总是坏才修?你落伍啦,预测性运维才是王炸!
503 5
|
11月前
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
292 0
|
11月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
存储 监控 算法
公司内部网络监控中的二叉搜索树算法:基于 Node.js 的实时设备状态管理
在数字化办公生态系统中,公司内部网络监控已成为企业信息安全管理体系的核心构成要素。随着局域网内终端设备数量呈指数级增长,实现设备状态的实时追踪与异常节点的快速定位,已成为亟待解决的关键技术难题。传统线性数据结构在处理动态更新的设备信息时,存在检索效率低下的固有缺陷;而树形数据结构因其天然的分层特性与高效的检索机制,逐渐成为网络监控领域的研究热点。本文以二叉搜索树(Binary Search Tree, BST)作为研究对象,系统探讨其在公司内部网络监控场景中的应用机制,并基于 Node.js 平台构建一套具备实时更新与快速查询功能的设备状态管理算法框架。
417 3

推荐镜像

更多