我正在运行这样的SSH流程:
sshproc = subprocess.Popen([command], shell=True)
exit = os.waitpid(sshproc.pid, 0)[1]
这可以工作并打开一个交互式终端。根据{{1}}的文档,subprocess
正在使用脚本的sshproc
。
问题是:如何打印到stderr或文件正在接收此子进程的输入?我正在创建一个日志API,并且目前无法记录在此SSH会话上运行的命令。
我不需要答案,只是在正确的方向上轻推。
谢谢大家!
编辑:如上所示启动流程非常重要,这样我就可以与用户进行交互式SSH会话。例如。据我所知,我无法使用sys.stdin
。
答案 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)
啊,既然你说的朝着正确的方向推进,我想我应该指出你的好读法:
-