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に渡されます。