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
而是使用 ps
和 grep
.
ansible jboss.servers -m shell -a 'ps ax | grep [j]boss | cut -d " " -f2'
使用 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
而是使用 ps
和 grep
.
ansible jboss.servers -m shell -a 'ps ax | grep [j]boss | cut -d " " -f2'