Ansible shell返回多个值


从Ansible远程执行shell时出现意外的行为。当我在远程机器上执行下面的命令,结果是:Ansible shell返回多个值

$ echo $(pgrep -f jboss) 

13248

现在如果我执行的Ansible壳我得到的回报倍数的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 }')' 

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

回答:

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

以上是 Ansible shell返回多个值 的全部内容, 来源链接: utcz.com/qa/257677.html

回到顶部