我试图使Junos PyEZ通过控制台端口(telnet到思科am 2511-RJ终端服务器,连接到JuniperSRX-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的当前主分支进行测试。
发布于 2016-11-11 17:43:06
通过添加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-08 18:23:02
您能否将脚本更改为使用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?
https://stackoverflow.com/questions/40493376
复制相似问题