Ansible shell returns 多个值

Ansible shell returns multiple values


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

$ echo $(pgrep -f jboss)
13248

现在,如果我作为 Ansible shell 执行命令,我会得到 return 多个 pids:

$ 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  }')'

但这不起作用,因为表达式已经用单引号引起来了。 有什么帮助吗?

因为 pgrep returns 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'