使用Python3 NCClient启用NACM时遭遇unknown object错误求助
修复ncclient启用NACM时的"unknown object"错误
问题出在你编辑配置时用错了YANG容器节点名称:
- 你在
edit_config的XML里使用了<ietf-netconf-acm>作为顶层容器 - 但从设备返回的
get_config结果可以看到,实际对应的容器节点是<nacm>
YANG模型ietf-netconf-acm的顶层容器名称就是nacm,而非模块名本身,这是你出错的核心原因。
修正后的代码
# 修正XML配置,把ietf-netconf-acm替换为nacm nacm_config = """<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> <enable-nacm>true</enable-nacm> </nacm> </config>""" from ncclient import manager m = manager.connect(host='192.168.40.100', port=830, username='root', password='password', hostkey_verify=False) # 执行编辑配置 m.edit_config(target='running', config=nacm_config) # 验证配置是否生效 nacm_reply = m.get_config(source='running', filter=('subtree', '<nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"/>')) print(nacm_reply)
补充说明
- 可以通过获取设备的YANG模型信息(比如用
m.get_schema('ietf-netconf-acm'))来确认节点结构,避免类似节点名称错误 - 部分设备可能需要先确认
ietf-netconf-acm模块已被加载,不过从你能获取到NACM配置来看,模块已经正常加载
内容的提问来源于stack exchange,提问作者Ulysses
相关产品推荐
相关产品推荐

