私はConnectwise Automate(以前のLabTech)を使用してbashスクリプトを実行し、リモートシステムでbashコマンドを実行しています。これらのシステムはLinuxとMacOSです。 CWA(Connectwise Automate)には、* nixシステムに対していくつかの特別な動作があります。ここで、コマンドまたは式がステータスコード0で終了すると、ストリーム(stdoutまたはstderr)に関係なく、すべての出力が「OK」という単語に置き換えられます。ゼロ以外の終了状態を返すと、CWAのリモート端末とスクリプト出力に出力が正しく表示されます。出力の置き換え動作が終了コードに基づいていることを明示的に確認することはできませんでしたが、これは非常に可能であると思います。
簡単な例として、適切な例外をecho "Test"
返しOK
、発生させます。ls ./no/such/directory
これはCWAの長い問題であり、ベンダーと協力してコマンド出力をディスク上のファイルにパイプし、CWA関連の機能を使用してそのファイルを読み取らないと、回避策や肯定的な結果が得られません。ただし、ファイルに書き込まれたコマンドの出力はしばしばOK
。
私が試したこと
私はできるだけ多くの解決策を探してみました。私が見つけたこれ質問は特に扱っており、less
主張によってless
異なります-K
。私の実装は正しくないかもしれませんが、bash -c
呼び出しに成功せずに解決策の一部を調整しようとしました。trap
私も同様のことを試み、おそらく(私の意見では)評価される前に終了コード0として返される最初のコマンドのためにecho "Test" && false
返されました。OK
false
問題の再記述
bash
具体的には、または経由で呼び出されたときに任意のユーティリティを「同軸」(つまり)選択した終了sh
状態に戻すか、それ以外の場合はゼロ以外の終了状態を返し、まだ指定されたユーティリティの出力をヒットすることは可能ですか? stdout/標準エラー?