未检测到 Python Netmiko 模式

Python Netmiko Pattern Not Detected

提问人:Bharath Reddy 提问时间:10/28/2023 更新时间:11/14/2023 访问量:59

问:

我正在使用下面的python代码来获取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.
  1. 尝试增加读取时间 - 不起作用
  2. 已检查空格或控制字符,使用十六进制转储 - 未找到任何
  3. 但是,如果我将预期的字符串设置为“ABCDEF32#”,那么它就可以正常工作

我不确定为什么在没有明确指定的情况下没有检测到模式,并且相同的设备有时工作正常,没有任何例外,我正在使用 netmiko 4.2.0。如果有人能帮我解决这个问题,那就太好了。

python 模式匹配 cisco-ios netmiko

评论

0赞 user1857654 11/3/2023
尝试在 send 命令中使用expect_string,cmd = ssh.send_command(“sh ver”, expect_string=“RP/0/RP0/CPU0:ABCDEF32#”) 也将读取超时增加到 10 或 15。

答:

0赞 mickyhale 11/14/2023 #1

我会为IOS XR设备使用适当的驱动程序,因为这是您正在与之交互的内容。

'device_type': 'cisco_xr',

驱动程序处理提示检测的方式与IOS设备略有不同。