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
,而是使用ps
和grep
。
ansible jboss.servers -m shell -a 'ps ax | grep [j]boss | cut -d " " -f2'
以上是 Ansible shell返回多个值 的全部内容, 来源链接: utcz.com/qa/257677.html