Python通过ssh子进程运行程序,并在运行时获取标准输出

时间:2018-06-27 14:31:04

标签: python ssh subprocess stdout paramiko

我有一个运行图像处理线程的python脚本,我希望该脚本在另一台计算机上启动另一个脚本。第一个脚本应该从图像处理线程中获取数据,将其发送到第二个脚本,然后在一切运行时从第二个脚本中获取标准输出。

我成功地使用spur库通过ssh运行了程序。我能够向该程序发送数据,但无法在程序仍在运行时获得它的标准输出(必须等待该过程完成):

    import spur

# Open SSH connection print("Connection ...") ssh = spur.SshShell( hostname="host", username="name", password="pswd", missing_host_key=spur.ssh.MissingHostKey.accept, ) # start program in a process (on the second machine) process = ssh.spawn(["sudo", "python3.6", "program.py"]) c=0 while True: print("send data : " + str(c)) process.stdin_write(str(c)) c+=1

我试图找到其他信息来做其他事情,也许使用其他软件包(例如paramiko吗?),但是没有找到任何类似的应用程序。

有人对此有一些信息吗?我应该完全使用其他东西吗?

谢谢