Netmiko调用commit方法未提交配置且无法退出Cisco IOS配置模式
问题核心原因
你代码的核心问题是device_type参数配置错误:
- 从你给出的设备提示符
RP/0/RP0/CPU0:cisco-lab-device可以判断,你操作的是Cisco IOS XR操作系统,而你代码中填的cisco_ios是适配传统IOS/IOS XE系统的驱动,这类系统不需要显式执行commit就会生效配置,也没有适配IOS XR的commit交互逻辑。 - 错误的驱动无法识别commit命令执行后设备返回的提示符,代码会一直卡在
device.commit()这一行等待响应,所以你看不到后续的DONE打印,配置也不会实际生效。
修正方案
将device_type参数修改为适配IOS XR的cisco_xr即可,该驱动原生支持IOS XR的配置提交逻辑,修正后的代码如下:
from netmiko import ConnectHandler device = ConnectHandler(device_type="cisco_xr", host="cisco-lab-device", username="admin", password="passwd", session_timeout=120, verbose=True) cmdlist = ['vrf new'] try: result = device.send_config_set(cmdlist, exit_config_mode=False) print("Result after sending commands ", result) except Exception as err: print(err) device.disconnect() result = device.commit() print('DONE') device.disconnect()
可选排查项
如果修改设备类型后仍有异常,可以按以下步骤排查:
- 升级Netmiko到3.0及以上版本,旧版本对IOS XR的适配存在已知bug
- 手动SSH登录设备,在全局配置模式下执行commit,确认是否有权限不足、需要confirm提示等额外交互逻辑
- 打开代码中注释的
session_log="output.txt"参数,记录完整的会话日志,定位commit执行阶段的具体返回内容
内容的提问来源于stack exchange,提问作者krishna
相关产品推荐
相关产品推荐

