python popen stdout strderr从ssh返回

2024-04-25 22:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个功能,建立一个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“below and comment”*',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()

我错过了什么?你知道吗


Tags: 命令noneapp远程stderrstdoutscriptscd