shell 可能的临时命令:如何在主机的输出中返回命令运行时间?

b0zn9rqh  于 2023-03-09  发布在  Shell
关注(0)|答案(1)|浏览(105)

我正在清单中的所有主机上运行一个简单的Ansible ad-hoc命令,我希望Ansible还显示从每个主机返回输出所用的时间。我可以在日志中看到时间,但我希望将其设置为stdout
我尝试在ansible.cfg中添加callback_whitelist = profile_tasks,但没有帮助。
例如,Ansible输出显示

[demo@demoserver ~]$ ansible all -m shell -a 'hostname -f'
worker0 | CHANGED | rc=0 >>
iworker0.unix.demo.com

worker2 | CHANGED | rc=0 >>
iworker2.unix.demo.com

worker1 | CHANGED | rc=0 >>
iworker1.unix.demo.com

worker3 | CHANGED | rc=0 >>
iworker3.unix.demo.com

日志显示

2020-01-30 15:46:27,924 p=22811 u=demo |  worker0 | CHANGED | rc=0 >>
iworker0.unix.demo.com

2020-01-30 15:46:27,955 p=22811 u=demo |  worker2 | CHANGED | rc=0 >>
iworker2.unix.demo.com

2020-01-30 15:46:27,960 p=22811 u=demo |  worker1 | CHANGED | rc=0 >>
iworker1.unix.demo.com

2020-01-30 15:46:27,975 p=22811 u=demo |  worker3 | CHANGED | rc=0 >>
iworker3.unix.demo.com

所以,我希望日志中的时间也显示为stdout,这可能吗?

[demo@demoserver ~]$ ansible --version
ansible 2.7.12
  config file = /home/demo/ansible.cfg
  configured module search path = [u'/home/demo/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jun 11 2019, 14:33:56) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
z9smfwbn

z9smfwbn1#

关于你的要求

  • 我希望Ansible还显示从每个主机返回输出所用的时间 *

并评论

  • 已尝试之前的方法...结果是time ; hostname -ftime && hostname -fnon-zero return code *

该命令

ansible test --user ${ACCOUNT} --ask-pass -m shell --args 'time hostname -f'

只是在工作并产生一个

test.example.com | CHANGED | rc=0 >>
test.example.com
real    0m0.003s
user    0m0.001s
sys     0m0.002s

关于你方的要求

  • 我希望日志中的时间显示为stdout *

它不显示执行命令所花费的时间,而是显示日期时间,您可以在命令后添加时间戳,如下所示

ansible test --user ${A_ACCOUNT} --ask-pass -m shell --args 'hostname -f; date +"%T.%3N"'

并且其产生的输出为

test.example.com | CHANGED | rc=0 >>
test.example.com
12:34:56.789

"感谢"

相关问题