You need to enable JavaScript to run this app. Python使用Netmiko配置3台思科路由器环回口触发超时错误求助
优惠活动
大模型
产品
解决方案
定价
更多

Python使用Netmiko配置3台思科路由器环回口触发超时错误求助

问题排查及解决方案

根因分析

你遇到的NetmikoTimeoutException报错主要由以下几个代码逻辑问题导致:

  • 最核心的错误:send_config_set()方法要求传入配置命令列表,你直接传入了带换行符的字符串,Netmiko无法逐行匹配设备返回的配置提示符,最终读取超时
  • 冗余循环逻辑:你把单个设备字典嵌套进了列表又做了一层循环,属于无效逻辑,也可能增加连接异常概率
  • 缺少必要的连接收尾操作:配置完成后没有退出配置模式、断开SSH连接,可能导致设备侧会话卡住
  • 默认超时时间太短:如果设备响应慢,默认的超时阈值无法覆盖配置交互时间

修复后可用代码

from netmiko import ConnectHandler

# 可根据实际情况调整超时时间,如果有enable密码就添加secret参数
base_router_params = {
    'device_type': 'cisco_ios',
    'username': 'cisco',
    'password': 'cisco',
    'timeout': 20,
    # 'secret': '你的enable密码' 如果需要进入特权模式就取消注释修改密码
}

for i, n in enumerate(range(177, 180), start=1):
    host = f"192.168.122.{n}"
    router_params = base_router_params.copy()
    router_params['ip'] = host
    # 建立连接
    net_connect = ConnectHandler(**router_params)
    # 如果需要进入特权模式就取消下一行注释
    # net_connect.enable()
    # 构造配置命令列表
    config_cmds = [
        f"int lo{i}",
        f"ip address {i}.{i}.{i}.{i} 255.255.255.255"
    ]
    # 下发配置
    output = net_connect.send_config_set(config_cmds)
    # 保存配置 可选,需要的话取消注释
    # net_connect.send_command("write memory")
    # 断开连接
    net_connect.disconnect()
    print(f"Router {host} 已完成loopback{i}配置")

验证排查步骤

如果修改后仍有报错,按以下顺序排查:

  • 手动通过SSH登录对应路由器IP,确认账号密码有效、可以正常进入全局配置模式
  • 确认路由器SSH配置正常,没有配置ACL限制本机IP访问
  • 如果设备响应较慢,可以把timeout参数调整到30以上

内容的提问来源于stack exchange,提问作者nagasheshu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 04:15:04