0

我正在尝试通过控制台端口使 Junos PyEZ 工作(telnet 到 Cisco AS2511-RJ 终端服务器,该服务器连接到 Juniper SRX-240 控制台端口)。

测试脚本是

dev = Device(host='X.X.X.X', user='XXX', password='XXXXXXXX',
    mode='telnet', port='2014', gather_facts=True)
try:
    dev.open()
    print(dev.facts)
    print(dev.cli("show version", format='text', warning=False))
except RuntimeError as rte:
    print("Exception: " + str(rte) )
finally:
    dev.close()

我的问题是脚本只能不时运行,但大多数运行都不成功。尝试不成功后,在日志中我看到类似

Nov  8 21:17:29  srxD-2 login: Login attempt for user <close-session/> from host [unknown]
Nov  8 21:17:29  srxD-2 login[39846]: LOGIN_PAM_AUTHENTICATION_ERROR: Failed password for user <close-session/>
Nov  8 21:17:29  srxD-2 login[39846]: LOGIN_FAILED: Login failed for user <close-session/> from host ttyu0
...........
    Nov  8 21:22:41  srxD-2 login: Login attempt for user d-trailer from host [unknown]
...........

所以 PyEZ 似乎并不总是能很好地处理我控制台的屏幕抓取问题。任何想法为什么会这样以及如何解决它?我正在使用来自 github 的 PyEZ 的当前主分支进行测试。

4

2 回答 2

1

您可以更改您的脚本以使用如下所示的 python 上下文管理器(它将负责关闭连接)?如果连接未正确关闭,则使用控制台连接(屏幕抓取),下次脚本可能会出现问题。

with Device(host='X.X.X.X', user='XXX', password='XXXXXXXX',
    mode='telnet', port='2014', gather_facts=True) as dev:
    print(dev.facts)
    print(dev.cli("show version", format='text', warning=False))

您能否分享日志来自何处的详细信息,因为这些不是来自 PyEZ?

于 2016-11-08T18:23:02.673 回答
1

这已通过添加console_has_banner=True选项修复,如下所示:

with Device(host='X.X.X.X', user='XXX', password='XXXXXX', mode='telnet', 
        port='2014', gather_facts=True, console_has_banner=True) as dev:
    print(dev.facts)
    print(dev.cli("show version", format='text', warning=False))

应用此选项后,脚本现在每次都能正常工作。

在此拉取请求中查看更多详细信息。

于 2016-11-11T17:43:06.470 回答