Ansible playbook shell输出

 夏石兵 发布于 2023-02-11 09:12

我想使用ansible-playbook使用ps,dstat等命令快速监控一些主机.该ansible命令本身完美的我想要做什么,比如我会使用:

ansible -m shell -a "ps -eo pcpu,user,args | sort -r -k1 | head -n5"

它很好地打印每个主机的所有std输出,如下所示:

localhost | success | rc=0 >>
0.0 root     /sbin/init
0.0 root     [kthreadd]
0.0 root     [ksoftirqd/0]
0.0 root     [migration/0]

otherhost | success | rc=0 >>
0.0 root     /sbin/init
0.0 root     [kthreadd]
0.0 root     [ksoftirqd/0]
0.0 root     [migration/0] 

然而,这需要我为每个不太"安全"的任务保留一堆shell脚本,所以我把它放在一个剧本中:

---
-
  hosts: all
  gather_facts: no
  tasks:
    - shell: ps -eo pcpu,user,args | sort -r -k1 | head -n5

并运行它-vv,但输出baiscally显示字典内容和换行不打印,所以这导致一个不可读的混乱像这样:

changed: [localhost] => {"changed": true, "cmd": "ps -eo pcpu,user,args | sort -r -k1 
head -n5 ", "delta": "0:00:00.015337", "end": "2013-12-13 10:57:25.680708", "rc": 0,
"start": "2013-12-13 10:57:25.665371", "stderr": "", "stdout": "47.3 xxx    Xvnc4 :24
-desktop xxx:24 (xxx) -auth /home/xxx/.Xauthority -geometry 1920x1200\n
.... 

我也尝试添加register: var和'调试'任务来显示,{{ var.stdout }}但结果当然是相同的.

有没有办法在通过playbook运行时从命令的stdout/stderr获得格式良好的输出?我可以想到一些可能的方法(使用sed格式输出?重定向输出到主机上的文件,然后将该文件返回并将其回显到屏幕?),但由于我对shell/ansible的了解有限,我需要一天试试吧.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有