ansible shell escape single and double quotes

24,477

Solution 1

Bash escaping rules will do:

ansible localhost -m shell -a "ps -eo pid,args --cols=10000 | awk '/\\/opt\\/logstash\\/logstash-1.5.3\\// && \$1 != PROCINFO[\"pid\"] { print \$1 }'"

Solution 2

Mine alternative version that worked:

ansible -m command -a "ps a |grep -E '/opt/logstash/logstash-1.5.3/vendor/jruby' " all --sudo

Check if the process are running:

ansible -m shell -a "ps aux |grep -E '/opt/logstash/logstash-1.5.3/vendor/jruby'|grep -v -e grep |wc" all 
Share:
24,477
sirkubax
Author by

sirkubax

Updated on March 29, 2020

Comments

  • sirkubax
    sirkubax about 4 years

    I'm trying to execute this command:

    ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && $1 != PROCINFO["pid"] { print $1 }'
    

    whith ansible -m shell module (not working example):

    ansible -m shell -a '"'ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && $1 != PROCINFO[\'pid\'] { print $1 }' '"' all
    

    One of the ways would be to put that into a file, but still it would be nice to run as a command - any ideas?

  • Graham Nicholls
    Graham Nicholls about 6 years
    I have to confess to an aversion to grep | grep -v grep. grep -Ec '/[o]pt..' would obviate the need for both the grep -v and the wc -c.