如何让我的python应用程序在继续之前等待某个子进程

时间:2012-02-19 17:31:12

标签: python process ssh fork subprocess

我在我的python脚本中生成ssh进程,如下所示:

env = {'SSH_ASKPASS':'/home/max/repo/vssh/vssh/vssh.py', 'DISPLAY':':123'}
for x in sessions:
    current_session = Popen(["ssh", x.address],
                            stdin=PIPE,
                            stdout=PIPE,
                            stderr=None,
                            shell=False,
                            env=env,
                            preexec_fn=os.setsid)

问题是我的脚本启动子进程,然后继续。 ssh需要输入密码,这正是我试图重定向到我的脚本的STDOUT / STDIN。除了当它要求我的密码时,我的脚本已经完成。

在输入密码并通过ssh成功建立连接之前,如何让我的脚本停止?

1 个答案:

答案 0 :(得分:3)

如果从真正读取,那么您可以使用communicate method。但是密码提示经常绕过stdin并与控制终端通信,在这种情况下你需要pexpect之类的东西。

您可能希望查看Python的SSH模块,它应该比管理子流程更简单,更健壮。