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

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

最佳答案

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

您可能想查看 Python 的 SSH 模块,这应该比管理子进程更简单、更可靠。

关于python - 如何让我的 python 应用程序在继续之前等待某个子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351417/

相关文章:

python - Pipenv libarchive 错误 : no such file or directory: b'liblibarchive. a'

python - 将发散颜色居中至零

python - 如何从 .pb 文件为 opencv 中的 dnn 模块生成 .pbtxt 文件?

C# nbtstat 进程找不到指定的文件

linux - Jenkins 和 Vagrant 的情况很奇怪

python - 随机排列 DataFrame 的行,直到列中的所有连续值都不同?

Erlang进程队列最佳实践?

java runtime.getRuntime.exec( cmd ) 带有长参数

python - Paramiko : NameError: global name 'descriptor' is not defined

ssh - 为什么将 -T 与 ssh 一起使用