python - 我如何知道远程进程正在运行或已完成?

标签 python ssh paramiko

我正在使用 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/

相关文章:

c++ - 无法使用 libssh2 进行编译

java - 在 Jelastic 环境中保护 Tomcat 节点

尝试从 SFTP 服务器流式传输文件时出现 Python Paramiko UTF-8 错误

python - 在 python 中运行一个子进程,并在 "real time"中显示输出并将其保存到变量中

python - 亚马逊 AWS Kinesis Video Boto GetMedia/PutMedia

python - 无法使用 OpenCV 创建基本视频文件

python - 无法安装python模块

python - Databricks Koalas 基于另一个 COlumn 值 Lambda 函数的列赋值

git - ssh-keygen' 未被识别为内部或外部命令

python - "type object ' EllipticCurvePublicKey ' has no attribute ' from_encoded_point '"在 pysftp/Paramiko 中