Bash脚本和yml文件输出

Bash脚本和yml文件输出

我试图将stdout脚本捕获到文件中,同时让它显示其正在进行的摘要:

./RUN host-names ANSIBLE.yml 2>&1 | tee out.txt

它的作用是显示初始行并将其转发到out.txt,但从那里开始实际的主机检查,它停止显示并转发到out.txt

PLAY [all]
********************************************************************

GATHERING FACTS
********************************************************************

之后,PLAYGATHERING FACTS会继续工作,但前提是我在没有命令的情况下运行脚本tee

ok: [host.com]
ok: [host.com]
ok: [host.com]
fatal: [host.com]

grep我也只对文件的一些输出感兴趣out.txt,如fatal并省略ok主机。

答案1

我找到了这个页面(https://coderwall.com/p/d5zqla/unbuffered-output-with-ansible-in-jenkins),展示了如何强制输出不被缓冲。

我修改了我的脚本,如下所示:

    export PYTHONUNBUFFERED=1
    ansible-playbook -i inventory site.yml

现在我在脚本运行时得到了可靠的输出。这有帮助吗?

相关内容