Netconf执行edit_config返回bad-element: config错误,此前可正常运行
问题排查:Netconf edit_config返回config 错误
可能原因
- 重复
标签嵌套 :ncclient的edit_config方法默认会自动给传入的配置内容包裹<config>标签,手动在配置里再加一层<config>会导致服务器解析失败,触发bad-element错误。 - 设备端Netconf配置变更:此前正常执行现在出错,大概率是设备的Netconf服务配置或Yang模型支持发生了变化,不再接受手动添加的外层
<config>。 - ncclient版本更新:新版本ncclient可能调整了
edit_config的参数处理逻辑,自动封装<config>的行为和旧版本不一致。
解决方法
1. 移除配置中的外层标签
把原配置修改为仅保留<interfaces>核心部分:
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> <interface> <name>Loopback138</name> <description>TEST_SPSJM</description> <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:softwareLoopback</type> <enabled>true</enabled> </interface> </interfaces>
之后重新调用命令:
nc_manager.edit_config(conf, default_operation="merge", target="running")
2. 检查ncclient版本并适配
执行命令查看当前ncclient版本:
pip show ncclient
如果是新版本(如0.6.13+),确认其edit_config是否自动封装<config>。若版本变更导致行为变化,可回退到之前能正常工作的版本,或根据新版本文档调整配置传入方式。
3. 验证设备Netconf能力
通过ncclient获取设备支持的Netconf能力,确认是否包含基础模型:
from ncclient import manager with manager.connect(host="设备IP", port=830, username="用户名", password="密码", hostkey_verify=False) as m: for cap in m.server_capabilities: print(cap)
检查是否有urn:ietf:params:netconf:base:1.0或urn:ietf:params:netconf:base:1.1,如果缺失,需要在设备上启用对应的Netconf基础配置。
4. 测试最小化配置
先提交极简配置(仅创建Loopback接口),不带外层<config>,验证是否能成功:
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> <interface> <name>Loopback138</name> <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:softwareLoopback</type> </interface> </interfaces>
如果成功,再逐步添加description、enabled等字段,排查是否有其他字段格式问题。
内容的提问来源于stack exchange,提问作者user3603644
相关产品推荐
相关产品推荐

