我如何知道远程进程是 运行 或已完成?
How do I know the remote process is running, or complete?
我正在使用 Python 库 Paramiko 运行 在另一台服务器上通过 ssh 命令。我面临的问题是 SSHClient.exec_command()
立即调用 returns,向我发送 stdin
、stdout
和 stderr
,我别无选择see 判断进程是否仍在 运行ning 中。我想我可能会尝试监视它 returns 的流是否仍然打开,但我找不到任何方法来执行此操作,除非尝试从 stdout
或 stderr
读取,或写入 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()
效果非常好。它阻塞直到命令完成,然后允许我继续。
我正在使用 Python 库 Paramiko 运行 在另一台服务器上通过 ssh 命令。我面临的问题是 SSHClient.exec_command()
立即调用 returns,向我发送 stdin
、stdout
和 stderr
,我别无选择see 判断进程是否仍在 运行ning 中。我想我可能会尝试监视它 returns 的流是否仍然打开,但我找不到任何方法来执行此操作,除非尝试从 stdout
或 stderr
读取,或写入 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()
效果非常好。它阻塞直到命令完成,然后允许我继续。