2016-12-21 5 views
1


Ansibleでシェルをリモート実行すると予期しない動作が発生します。私は、リモートマシン上で次のコマンドを実行すると、結果は次のとおりです。私はAnsibleシェルのようなコマンドを実行した場合可能なシェルが複数の値を返す

$ echo $(pgrep -f jboss) 
13248 

は今、私はリターン複数のPIDとして取得:

$ ansible jboss.servers -m shell -a 'echo $(pgrep -f jboss)' -u centos 
10.3.9.155 | SUCCESS | rc=0 >> 
13248 16362 16363 

私はさらにする必要としてシェルを精巧にするためには、私がリモートマシンにいる場合と同じ結果を得る方法を見つける必要があります。試したことがあります:

しかし、式がすでに一重引用符で囲まれているため、これは機能しません。 助けてください?

答えて

1

pgrepもAnsibleプロセスを返します。試してください:

ansible jboss.servers -m shell -a 'ps ax | grep jboss' 

あなたは追加のPIDを取得している理由を知っています。これを修正する1つの方法は、pgrepを使用せず、代わりにpsgrepを使用することです。

ansible jboss.servers -m shell -a 'ps ax | grep [j]boss | cut -d " " -f2' 
+0

ありがとうございます。私は列をf1に変更するだけでした(それ以外の場合はttyが返されます)。今それは魅​​力のように動作します! –

関連する問題