我需要通过运行 shell 命令定期在我的 python 程序中对远程机器进行查询。使用 subprocess.run(["ssh", "MY_SERVER", ....])
没问题,但是我必须通过执行多个 ProxyJump 来访问服务器,这使得初始连接建立非常慢。
是否可以先创建与服务器的持久连接,然后发出 shell 命令并通过该管道捕获标准输出?
最佳答案
有几种方法可以做到这一点。
communicate
,而是使用 write
直接写入进程标准输入和 flush
. (见下面一段相同的代码)读取/写入子进程的示例代码
import subprocess
p = subprocess.Popen("bash", stdin=subprocess.PIPE, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
p.stdin.write(b"ls\n")
p.stdin.flush()
res = p.stdout.read(100)
print(res)
关于python - 使用 Python 子进程为后续 ssh 命令保持 SSH 连接处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62499215/