python popen stdout strderr从ssh返回

时间:2015-11-04 14:19:17

标签: python popen stderr

我有一个功能,它构建一个ssh sommand行并将其传递给popen所以我可以在远程盒子上运行命令(我知道我可以使用Fabirc或paramiko但为了兴趣,我想这样做)。

所以功能调用是Poepn(部分)的封装器

def runcmd(cmd, host=None, stdout=None, stderr=None, both=None, shell=None, user=None)

我调用它进行测试 runcmd('cd~ / app-scripts; grep“下面和commment”*',user =“testuser”)

并且它构建的命令显示为

ssh -F /home/testuser/.ssh/config testuser@localhost 'cd ~/app-scripts; grep "below and commment" *'

这在“远程”主机上运行正常,标准输出正确显示结果 - 但是stderr还包含来自远程主机的所有登录消息。

对Popen的内部函数是

p = Popen(sshcmd,stdout=PIPE,stderr=PIPE,shell=True) stdout_data,stderr_data = p.communicate()

我缺少什么?

0 个答案:

没有答案