2016-07-25 267 views
1

我试图执行此命令:ansible外壳逃逸单引号和双引号

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

蒙山ansible -m外壳模块(工作示例):

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

之一方法是将其放入一个文件中,但仍然可以作为命令运行 - 任何想法?

回答

2

猛砸转义规则将做:

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

感谢。你的回答有助于解决我的问题 –

0

矿替代版本工作:

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

检查过程中运行:

ansible -m shell -a "ps aux |grep -E '/opt/logstash/logstash-1.5.3/vendor/jruby'|grep -v -e grep |wc" all