2016-07-25 271 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