【发布时间】:2016-08-07 22:31:03
【问题描述】:
我正在尝试编写一个 Python 脚本(带有循环)以在 SSH 中连接,如果一切正常(密码和路由)它就可以工作,但是当它不工作时停止(密码错误或没有主机路由)。这里是脚本的重要部分,我如何控制一切是否正常?
connexion = pexpect.spawn("ssh -o StrictHostKeyChecking=no "+user+"@" + ip )
index=connexion.expect(':')
connexion.sendline(password + "\r")
connexion.expect('>')
connexion.sendline('show clock \r')
connexion.expect('>')
connexion.sendline('exit')
connexion.close()
我得到错误:
Traceback (most recent call last):
File "script.py", line 21, in <module>
connexion.expect('>')
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1418, in expect
timeout, searchwindowsize)
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1433, in expect_list
timeout, searchwindowsize)
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1521, in expect_loop
raise EOF(str(err) + '\n' + str(self))
pexpect.EOF: End Of File (EOF). Exception style platform.
<pexpect.spawn object at 0x7fcfeecee750>
version: 3.1
command: /usr/bin/ssh
args: ['/usr/bin/ssh', '-o', 'StrictHostKeyChecking=no', 'username@10.9.128.5']
searcher: <pexpect.searcher_re object at 0x7fcfeecee850>
buffer (last 100 chars): ''
before (last 100 chars): ' connect to host 10.9.128.5 port 22: No route to host\r\r\npassword\r\n\r\n'
谢谢
【问题讨论】:
-
您遇到什么错误?因为如果密码不正确,您可能会将代码放在 try 块中并捕获错误并再次提示用户输入密码。您能否发布一些失败的代码示例以及完整的错误回溯?
-
Traceback(最近一次调用最后一次):文件“script.py”,第 21 行,在
connexion.expect('>') 文件“/usr/lib/python2.7/dist -packages/pexpect/__init__.py”,第 1418 行,预期超时,搜索窗口大小)文件“/usr/lib/python2.7/dist-packages/pexpect/__init__.py”,第 1433 行,预期列表超时,搜索窗口大小)文件“/usr/lib/python2.7/dist-packages/pexpect/__init__.py”,第 1521 行,在 expect_loop 中引发 EOF(str(err) + '\n' + str(self)) pexpect.EOF: End文件(EOF)。异常风格的平台。 -
您能否将该错误添加到您的原始帖子并格式化它以便于阅读?
-
好的,我编辑帖子。
-
看起来它可能在无法到达主机时发生了 eof 异常。您可能需要一个 try 块来捕获异常发生并处理连接已终止或不可用的事实。