2016-04-19 69 views
1

所以我写了下面的阅读Pexpect的文档后:EOF异常而使用SSH密码Pexpect的提示

import pexpect 
from pexpect import popen_spawn 
child = popen_spawn.PopenSpawn("ssh -t -t [email protected]") 
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在没有提示输入密码的情况下不会关闭。有什么我在这里失踪?

+0

密码提示是怎样的? – Jakuje

+0

提示文字是'root @ server1的密码:' – Erric

+0

在Windows中使用pexpect时,这似乎是一个常见错误。我正在调试它。 – newlog

回答

1

一般来说,这种情况发生在您期望的内容('password')未在输出中找到。

当服务器请求在您的机器上安装公钥时,您应该期待'(是/否)'会出现一些情况吗?' - 就像下面的输出一样。

他无法建立主机的真实性。 ECDSA密钥指纹是x:xx:35:ae:1a:2e:69:e4:4d:b4:5e:2d:02:xx:f2:ed。 您确定要继续连接(是/否)吗?