当前位置:首页>python>Python Netconf读取华为设备接口状态

Python Netconf读取华为设备接口状态

  • 2026-10-11 06:19:06
Python Netconf读取华为设备接口状态

Netconf是我这几年新学的网络管理协议,它比SNMP牛在哪儿?它是面向操作的,不光能读,还能改配置,而且返回的是结构化XML,解析起来比SNMP的OID直观多了。

华为设备从VRP V200R003版本开始支持Netconf,我手头用的V200R010,用ncclient这个Python库来读取接口状态。

先说连接,ncclient的manager.connect()方法,host填设备IP,port默认830(Netconf标准端口),username和password跟SSH登录一样。华为设备默认开Netconf,要在系统视图下看 netconf paramter 确认端口号。

读取接口状态用 get 操作,过滤条件用XPath表达式。华为的接口状态XPath是 ietf-interfaces:interfaces-state/interface,能拿到接口名、IP地址、物理状态、协议状态等。

我写了个脚本,定时用Netconf读所有物理接口的状态,跟前一天的快照比对,发现状态变化就告警。比SNMP Trap还能提前发现问题——Trap要等设备主动发,Netconf是主动去查。

有个坑要注意:华为设备的Netconf返回XML里,接口名大小写跟CLI里敲的命令不一样。比如CLI里是 GigabitEthernet0/0/1,XML里可能是 GE0/0/1,做字段映射要统一格式。

YANG模型这块,华为用的 ietf-interfaces 标准模型,还加了很多私有扩展。读标准字段用 ietf-interfaces,读华为私有字段要到 huawei-interface 命名空间下找。

对比SNMP,Netconf的优势是:第一,返回结构化数据,不用像SNMP那样一个OID一个OID地读;第二,支持事务操作,改配置要么全成功要么全回滚;第三,有确认提交机制,防止配置改了一半设备断连。

我现在的运维流程里,日常状态巡检用Netconf替代了SNMP读操作,配置变更还是用SSH+expect,等哪天把Netconf的edit-config操作搞稳定了再全面切换。

Netconf和SNMP的对比很直观:

对比项
Netconf
SNMP
数据格式
XML(结构化)
OID(扁平)
配置能力
支持增删改查+事务回滚
读为主,写复杂
安全机制
SSH加密传输
SNMPv3才有加密
YANG模型
厂商标准+私有扩展
MIB(私有MIB多)
华为支持版本
VRP V200R003起
所有版本

最新文章

随机文章