如何在Python中的遠程服務器上執行命令並將標準輸出傳遞給本地命令?要做到ssh host 'echo test' | cat
在Python,我已經試過使用Paramiko的標準輸出作爲標準輸入與子流程
import paramiko
import subprocess
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('host', username='user')
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('echo test')
proc = subprocess.Popen(['cat'], stdin=ssh_stdout)
outs, errs = proc.communicate()
print(outs)
,但我得到的異常'ChannelFile' object has no attribute 'fileno'
。看來Paramiko的ssh_stdout
不能作爲stdin與subprocess.Popen一起使用。
'while proc.poll():'並不是真的必要的,它是_wrong_。如果成功完成,它將返回0.您必須執行'while proc.poll()不是None:'以主動等待程序退出。 –