ansible shell 转义单引号和双引号
ansible shell escape single and double quotes
我正在尝试执行此命令:
ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO["pid"] { print }'
whith ansible -m shell 模块(not 工作示例):
ansible -m shell -a '"'ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO[\'pid\'] { print }' '"' all
其中一种方法是将其放入文件中,但 运行 作为命令仍然很好 - 有什么想法吗?
Bash 转义规则可以:
ansible localhost -m shell -a "ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && $1 != PROCINFO[\"pid\"] { print $1 }'"
我的有效替代版本:
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
一个简单的方法(即不需要重写命令或引入一堆转义)是使用临时变量。
你原来的命令:
ps -eo pid,args --cols=10000 \
| awk '/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO["pid"] { print }'
对应ansible调用:
x='/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO["pid"] { print }'; \
ansible all -m shell -a "ps -eo pid,args --cols=10000 | awk '$x'"
我正在尝试执行此命令:
ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO["pid"] { print }'
whith ansible -m shell 模块(not 工作示例):
ansible -m shell -a '"'ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO[\'pid\'] { print }' '"' all
其中一种方法是将其放入文件中,但 运行 作为命令仍然很好 - 有什么想法吗?
Bash 转义规则可以:
ansible localhost -m shell -a "ps -eo pid,args --cols=10000 | awk '/\/opt\/logstash\/logstash-1.5.3\// && $1 != PROCINFO[\"pid\"] { print $1 }'"
我的有效替代版本:
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
一个简单的方法(即不需要重写命令或引入一堆转义)是使用临时变量。
你原来的命令:
ps -eo pid,args --cols=10000 \
| awk '/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO["pid"] { print }'
对应ansible调用:
x='/\/opt\/logstash\/logstash-1.5.3\// && != PROCINFO["pid"] { print }'; \
ansible all -m shell -a "ps -eo pid,args --cols=10000 | awk '$x'"