如何在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:'以主动等待程序退出。 –