我有以下代码(更新包括Pexpect的):如何获取密码提示
import sys
import subprocess
import pexpect
print "0"
ssh = subprocess.Popen("ssh -A -t [email protected] ssh -A -X [email protected]",
shell = True,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE).communicate()
print "1"
child = pexpect.spawn(ssh)
print "2"
child.expect ('password')
print "3"
child.sendline ('password2')
print "4"
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print result
当我运行它,我看到了零印刷,然后在屏幕上显示的密码提示。打印的行永远不会执行,因此下面的代码也不会执行。我可以以用户身份输入密码,但会挂起。当我用Ctrl + C杀死它时,在返回到命令提示符之前,第二个登录横幅出现第二个密码提示。有人可以解释如何捕获第一密码提示,以便程序可以发送密码,而不是用户?另外,有人能解释为什么我没有得到结果变量,直到我杀了程序?
我建议改用书面密码ssh_keys。你的生活会更轻松,同时更安全。 – mosh442