使用pexpect进行ssh密码提示时出现EOF异常

3

阅读pexpect文档后,我写出了以下内容:

import pexpect
from pexpect import popen_spawn
child = popen_spawn.PopenSpawn("ssh -t -t root@server1")
child.expect('password:')
child.sendline('pwd')        # Send the password

现在我遇到的错误是:
Traceback (most recent call last):
  File "C:\ssh_exp.py", line 4, in <module>
    child.expect('password:')
  File "C:\Python27\lib\site-packages\pexpect\spawnbase.py", line 315, in expect
    timeout, searchwindowsize, async)
  File "C:\Python27\lib\site-packages\pexpect\spawnbase.py", line 339, in expect_list
    return exp.expect_loop(timeout)
  File "C:\Python27\lib\site-packages\pexpect\expect.py", line 102, in expect_loop
    return self.eof(e)
  File "C:\Python27\lib\site-packages\pexpect\expect.py", line 49, in eof
    raise EOF(msg)
pexpect.exceptions.EOF: End Of File (EOF).
<pexpect.popen_spawn.PopenSpawn object at 0x0000000002BA3F98>

我已经验证了与server1的连接是正常的,而且ssh在不提示密码的情况下不会关闭。这里还有什么我需要注意的吗?


密码提示是什么样子的? - undefined
提示文本为 root@server1的密码: - undefined
这似乎是在Windows中使用pexpect时常见的错误。我正在调试它。 - undefined
找到解决方案了吗? - undefined
1个回答

0
通常情况下,当你期望的内容('password')在输出中找不到时,就会出现这种情况。
有一些情况下,服务器要求在您的计算机上安装公钥,并且您应该期望看到类似以下输出的'(yes/no)?'。
主机 ' ' 的真实性无法确认。 ECDSA 密钥指纹为 x:xx:35:ae:1a:2e:69:e4:4d:b4:5e:2d:02:xx:f2:ed。 您确定要继续连接吗(是/否)?

这并非事实:“我已验证与server1的连接是正常的,并且ssh在没有提示输入密码的情况下不会关闭。” - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接