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

Netmiko执行show version遇Pattern Not Detected问题求助

问题:Netmiko连接Cisco IOS XR设备时自动匹配提示符失败,仅指定expect_string可正常运行

环境与代码

使用Netmiko 4.2.0连接Cisco IOS XR设备执行show version,代码如下:

from netmiko import ConnectHandler


device_cisco_ios = {
    'device_type': 'cisco_ios',
    'host': "ABCDEF32",
    'username': "XXXX",
    'password': "xxxxx",
    "session_log": 'netmiko_session.log',

}
try:
    with ConnectHandler(**device_cisco_ios) as ssh:
        cmd = ssh.send_command("sh ver")
        print(cmd)

except Exception as e:
    print(str(e))

会话日志(netmiko_session.log)

Last login: Fri Oct 27 17:57:36 2023 from 10.245.246.24


terminal width 511
terminal length 0


RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#terminal width 511





RP/0/RP0/CPU0:ABCDEF32#terminal length 0

sh ver
RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#sh ver

Cisco IOS XR Software, Version 7.3.3 LNT
Copyright (c) 2013-2022 by Cisco Systems, Inc.

Build Information:
 Built By     : xxxx
 Built On     : xxx
 Build Host   : xxx
 Workspace    : XXXX
 Version      : 7.3.3
 Label        : 7.3.3

cisco 8000 (Intel(R) Xeon(R) CPU D-1530 @ 2.40GHz)
cisco 8201-32FH (Intel(R) Xeon(R) CPU D-1530 @ 2.40GHz) processor with 32GB of memory
ABCDEF32 uptime is 24 weeks, 11 hours, 15 minutes
Cisco 8000 Series 32x400G QSFPDD 1RU Fixed System w/HBM

RP/0/RP0/CPU0:ABCDEF32#

RP/0/RP0/CPU0:ABCDEF32#exit

报错信息

Pattern not detected: 'RP/0/RP0/CPU0:ABCDEF32\\#terminal\\ length\\ 0' in output.

Things you might try to fix this:
1. Explicitly set your pattern using the expect_string argument.
2. Increase the read_timeout to a larger value.

You can also look at the Netmiko session_log or debug log for more information.

已尝试操作

  • 增加read_timeout时长,无效;
  • 检查空白字符或控制字符(十六进制转储),未发现异常;
  • 仅指定expect_string="ABCDEF32#"时,代码可正常运行。

疑问:为何不指定expect_string时自动匹配失败,且同一设备有时能正常运行?


解答

核心原因

  1. 设备类型配置错误:你使用的device_type是cisco_ios,但目标设备是Cisco IOS XR系统。Netmiko针对cisco_ios预设的提示符匹配规则,无法兼容IOS XR的长格式提示符(RP/0/RP0/CPU0:ABCDEF32#),导致自动匹配逻辑混乱。
  2. 动态匹配的歧义问题:Netmiko默认会基于初始获取的提示符生成匹配规则,执行terminal length 0等命令时,输出中出现的RP/0/RP0/CPU0:ABCDEF32#terminal length 0会被错误识别为目标提示符,而非命令本身,触发匹配失败。

解决方法

  1. 修正设备类型:将设备配置中的device_type改为cisco_xr,Netmiko针对IOS XR有专门的提示符匹配逻辑,能正确识别RP/0/RP0/CPU0:ABCDEF32#格式的提示符:
device_cisco_xr = {
    'device_type': 'cisco_xr',
    'host': "ABCDEF32",
    'username': "XXXX",
    'password': "xxxxx",
    "session_log": 'netmiko_session.log',
}
  1. 全局设置基础提示符:若无法修改device_type,可在连接后设置全局匹配规则,避免每次命令都手动指定:
with ConnectHandler(**device_cisco_ios) as ssh:
    ssh.set_base_prompt(prompt_pattern=r'RP/0/RP0/CPU0:\w+#')
    cmd = ssh.send_command("sh ver")
    print(cmd)
  1. 命令级指定提示符:保持现有配置的情况下,每次调用send_command时明确指定expect_string,比如通用正则表达式expect_string=r'RP/0/RP0/CPU0:ABCDEF32#'。

补充说明

同一设备偶尔能正常运行的原因:当设备返回提示符的时机恰好符合cisco_ios的模糊匹配规则时,会偶然成功,但这种情况不可靠,必须通过修正设备类型或明确提示符规则彻底解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:05:36