如何让 Junos PyEZ 通过控制台端口工作?
How to make Junos PyEZ work via console port?
我正在尝试通过控制台端口使 Junos PyEZ 工作(telnet 到连接到 Juniper SRX-240 控制台端口的 Cisco AS2511-RJ 终端服务器)。
测试脚本是
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 的当前主分支进行测试。
您能否更改脚本以使用 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?
已通过添加 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))
应用此选项后,脚本现在每次都能正常运行。
查看更多详细信息in this pull request。
我正在尝试通过控制台端口使 Junos PyEZ 工作(telnet 到连接到 Juniper SRX-240 控制台端口的 Cisco AS2511-RJ 终端服务器)。
测试脚本是
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 的当前主分支进行测试。
您能否更改脚本以使用 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?
已通过添加 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))
应用此选项后,脚本现在每次都能正常运行。
查看更多详细信息in this pull request。