塩実行モジュールを作成しようとしていて、モジュール内でcmd.run
を正しく使用するのに問題があります。SaltStack実行モジュールがcmd.runを正しく使用できない
私は(マスターレス手先を使用して)実行した場合:
salt-call cmd.run "cat hey.txt | grep 'hey there'"
私が取得:
[INFO ] Executing command 'cat hey.txt | grep 'hey there'' in directory '/root'
local:
hey there
これはファイルに猫を使用し、該当する行をgrepするとして、私が期待するものです。しかし、ときに私は関数としての私の実行モジュールでこれを実装する:
def foo():
return __salt__['cmd.run']("cat hey.txt | grep 'hey there'")
と私はモジュールを同期した後、それを呼び出す:
salt-call example.foo
それは(2番目のエラーがちょうどちょっとの内容を印刷している返します.TXT):
[INFO ] Executing command 'cat hey.txt | grep 'hey there'' in directory '/root'
[ERROR ] Command 'cat hey.txt | grep 'hey there'' failed with return code: 1
[ERROR ] output: hey there
stranger
I like your
boots
cat: '|': No such file or directory
cat: grep: No such file or directory
cat: 'hey there': No such file or directory
local:
hey there
stranger
I like your
boots
cat: '|': No such file or directory
cat: grep: No such file or directory
cat: 'hey there': No such file or directory
ので、何らかの理由でそれがコマンドとしてはgrepを認識しておらず、単にコマンドライン上の猫のすべてにしようとしているかのように見えますが、情報COMMを語ります私はcmd.runを呼び出すことによって直接行ったのとまったく同じように実行されていたので、なぜこれが起こっているのか混乱しています。
あなた自身の質問に答えることができ、あなたと同じ質問に遭遇する可能性のある他の人を助けることができます:) –