【问题标题】:How to get my python application to wait for a certain subprocess before continuing如何让我的 python 应用程序在继续之前等待某个子进程
【发布时间】:2012-03-10 05:17:15
【问题描述】:

我正在我的 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 成功建立连接之前,如何让我的脚本停止?

【问题讨论】:

标签: python process ssh fork subprocess


【解决方案1】:

如果是真的从标准输入读取,那么您可以使用communicate method。但是密码提示通常会绕过标准输入并与控制终端进行通信,在这种情况下,您需要类似pexpect

您可能想研究 Python 的 SSH 模块,它应该比管理子进程更简单、更健壮。

【讨论】:

  • 我可以发送到控制终端的 STDIN 吗?
  • 使用 pexpect,是的。虽然我不认为它被称为终端的标准输入。
猜你喜欢
  • 2020-01-18
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多