You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netmiko连接Arista EOS设备报netmiko.exceptions.ReadTimeout错误

Netmiko连接Arista vEOS触发Width set to匹配读超时修复方案

问题定位结论

22端口telnet连通正常可排除网络层、SSH端口监听异常问题,报错根因为Netmiko会话初始化阶段执行终端宽度设置命令后,未匹配到内置规则预期的Width set to返回字符串,触发读超时。该问题通常由三类原因导致:

  • vEOS版本差异,CLI返回的操作提示和Netmiko内置适配规则不匹配
  • 设备登录后存在额外交互内容(欢迎横幅、首次登录改密提示、配置向导等)
  • 设备CPU负载高,命令响应速度超过默认读超时时长

排查步骤

  1. 优先开启Netmiko会话日志,记录完整SSH交互过程,避免盲目调参。在设备连接配置字典中加入日志配置项:
arista_vEOS  = {
        'device_type': 'arista_eos',
        'ip': '192.168.12.12',
        'username': 'asasasa',
        'password': 'ddasasas',
        'session_log': 'netmiko_session.log'
}

执行一次脚本后查看netmiko_session.log,即可看到Netmiko发送终端宽度设置命令后设备返回的完整内容,直接定位是返回提示不匹配、存在额外登录提示、还是设备无响应。
2. 手动通过原生SSH客户端连接目标vEOS,登录后手动执行terminal width 511(即Netmiko默认发送的终端宽度设置命令),确认设备返回内容,排除设备卡在初始化配置向导、用户权限不足无法执行命令的问题。

对应修复方案

  • 若为设备响应慢导致超时:在连接配置中加入'read_timeout': 60,将默认读超时从10秒调整为60秒即可。
  • 若为设备返回的宽度设置提示和默认Width set to规则不匹配:在连接配置中加入'disable_set_terminal_width': True,直接跳过终端宽度设置步骤,该操作不影响绝大多数场景下的命令执行、结果返回逻辑,是兼容性最好的快速修复方案。
  • 若日志显示登录后存在欢迎横幅、首次登录改密提示、MFA验证等额外交互:先在vEOS侧关闭非必要的登录横幅、首次登录强制改密配置,确保登录后直接进入用户/特权模式提示符。
  • 若使用的vEOS版本较老(4.20以前版本),可尝试将fast_cli参数设置为False,关闭Netmiko的快速CLI交互模式,兼容老版本设备的慢响应逻辑。

脚本问题修正

原脚本存在两处逻辑/语法笔误,可一并调整:

  1. 打印顺序错误:ConnectHandler调用时就会发起连接,原写法在连接建立失败时不会输出连接尝试提示,需将连接尝试提示调整到ConnectHandler调用前。
  2. 命令与提示不匹配:打印提示为Show IP Interfaces:但实际执行的是日志查询命令,且EOS上查询最近10条日志的标准语法为show logging last 10,原show log 10写法在部分版本上会返回语法错误。

修正后的可运行参考代码:

from netmiko import ConnectHandler

arista_vEOS  = {
        'device_type': 'arista_eos',
        'ip': '192.168.12.12',
        'username': 'asasasa',
        'password': 'ddasasas',
        'read_timeout': 60,
        'session_log': 'netmiko_session.log',
        'disable_set_terminal_width': True
    }

print(f'----- Trying to establish a SSH connection with {arista_vEOS["ip"]}... -----')
net_connect = ConnectHandler(**arista_vEOS)
print('SSH connection successfully created!')
output = net_connect.send_command('show logging last 10')
print('Recent 10 device logs:')
print(output)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:30:53