Ansible shell返回多个值

时间:2016-12-21 15:10:49

标签: ansible ansible-playbook


我使用Ansible远程执行shell时出现意外行为。当我在远程计算机上执行以下命令时,结果是:

$ echo $(pgrep -f jboss)
13248

现在,如果我执行命令为Ansible shell,我会返回多个pid:

$ ansible jboss.servers -m shell -a 'echo $(pgrep -f jboss)' -u centos
10.3.9.155 | SUCCESS | rc=0 >>
13248 16362 16363

由于我需要进一步详细说明shell,我需要找到一种方法来获得与我在远程计算机上相同的结果。我试过了:

'echo $(pgrep -f jboss | awk '{ print $1 }')'

但这并不起作用,因为表达式已经是单引号。 有帮助吗?

1 个答案:

答案 0 :(得分:1)

因为pgrep也会返回Ansible进程。尝试:

ansible jboss.servers -m shell -a 'ps ax | grep jboss'

然后你知道为什么你得到额外的PID。解决此问题的一种方法是不使用pgrep而是使用psgrep

ansible jboss.servers -m shell -a 'ps ax | grep [j]boss | cut -d " " -f2'