我需要通过运行 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)




