我如何知道远程进程是 运行 或已完成?

How do I know the remote process is running, or complete?

我正在使用 Python 库 Paramiko 运行 在另一台服务器上通过 ssh 命令。我面临的问题是 SSHClient.exec_command() 立即调用 returns,向我发送 stdinstdoutstderr,我别无选择see 判断进程是否仍在 运行ning 中。我想我可能会尝试监视它 returns 的流是否仍然打开,但我找不到任何方法来执行此操作,除非尝试从 stdoutstderr 读取,或写入 stdin 并等待接收 ValueError。任何人都可以告诉我我遗漏的应该可以代替的东西吗?

感谢@fixxxer 的建议,我找到了我需要知道的东西。我的测试代码现在看起来像这样:

import paramiko
import time

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost', username='user', password='password')

transport = ssh.get_transport()
channel = transport.open_session()
channel.exec_command('./exec_test.py')

status = channel.recv_exit_status()

效果非常好。它阻塞直到命令完成,然后允许我继续。