python子进程的自定义标准输入

时间:2010-09-16 17:56:48

标签: python subprocess stdin

我正在运行这样的SSH流程:

sshproc = subprocess.Popen([command], shell=True)
exit = os.waitpid(sshproc.pid, 0)[1]

这可以工作并打开一个交互式终端。根据{{​​1}}的文档,subprocess正在使用脚本的sshproc

问题是:如何打印到stderr或文件正在接收此子进程的输入?我正在创建一个日志API,并且目前无法记录在此SSH会话上运行的命令。

我不需要答案,只是在正确的方向上轻推。

谢谢大家!

编辑:如上所示启动流程非常重要,这样我就可以与用户进行交互式SSH会话。例如。据我所知,我无法使用sys.stdin

1 个答案:

答案 0 :(得分:7)

sshproc = subprocess.Popen([command],
                        shell=True,
                        stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE,
                        )

stdout_value, stderr_value = sshproc.communicate('through stdin to stdout')
print repr(stdout_value)
print repr(stderr_value)

啊,既然你说的朝着正确的方向推进,我想我应该指出你的好读法:

-