
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=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#--ユーザー出力が有効
実際のエラーは引き続き stderr に送信されます。