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

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

gcloudいくつかの条件文の後にGoogle Cloud SDK のコマンドを使用する cron ジョブ用の 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=errorcritical追加してみましたが、効果がありません。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#--ユーザー出力が有効

実際のエラーは引き続き stderr に送信されます。

関連情報