我正在使用 Python 库 Paramiko 在另一台服务器上通过 ssh 运行命令。我面临的问题是 SSHClient.exec_command()
调用立即返回,发送给我 stdin
, stdout
,和stderr
并且没有其他方法可以让我知道该进程是否仍在运行。我想我可以尝试监视它返回的流是否仍然打开,但除了尝试读取 stdout
之外,我找不到任何方法来做到这一点。或stderr
,或写信至stdin
并等待收到 ValueError
。谁能告诉我一些我错过了但应该有用的东西?
最佳答案
感谢@fixxer的建议,我找到了我需要知道的东西。我的测试代码现在如下所示:
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 - 我如何知道远程进程正在运行或已完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29994615/