すべてのエラー出力を停止せずにクローンスクリプトでgcloudコマンドのstderr出力を停止するにはどうすればよいですか?

すべてのエラー出力を停止せずにクローンスクリプトでgcloudコマンドのstderr出力を停止するにはどうすればよいですか?

gcloudいくつかの条件文の後に、Google Cloud SDKのコマンドを使用するクローン操作用のbashスクリプトがあります。

例えば。

gcloud compute firewall-rules update allow-ssh --source-ranges=$(echo "${mylocations[@]}" | tr ' ' ',')

動作方法は次のとおりですcrontab

*/2 * * * *        /home/user/bin/firewall-update.sh >/dev/null

サーバーがエラーに関する電子メールを受信できるように電子メールMTAを設定しましたが、stdoutは/dev/null

問題は、実行が成功してもgcloud出力がstderrに送信されるため、スクリプトが実行されるたびに常にこの行を含む電子メールを受信することです。

タイトル: Cron user@host /home/user/bin/firewall-update.sh >/dev/null

[https://www.googleapis.com/compute/v1/projects/project-name-4234534/global/firewalls/allow-ssh]を更新しました。

[https://www.googleapis.com/compute/v1/projects/project-name-4234534/global/firewalls/allow-mosh] を更新しました。

...

gcloud コマンドに--verbosity=error,criticalと を追加してみましたが何の効果もありませんでした。none

正常に完了した後、出力がstderrに移動するのはなぜですか?エラーが発生したときに電子メールを受信し続けながら、これらの電子メールの受信を停止するにはどうすればよいですか?

ベストアンサー1

回避策は、すべてのgcloudコマンドに適用される次のグローバルフラグを追加することです。

--no-user-output-enabled

    Print user intended output to the console. 
    Overrides the default core/user_output_enabled property value for this command invocation. 
    Use --no-user-output-enabled to disable.

https://cloud.google.com/sdk/gcloud/reference#--user-output-enabled

実際のエラーはまだstderrに渡されます。

おすすめ記事