Gcloud沒有錯誤時如何抑制
沒有錯誤時如何抑制gcloud compute firewall-rules update
輸出?
我有一個 bash 腳本作為 cron 作業執行,其中包含一些 gcloud 命令。
例如。
gcloud compute firewall-rules update allow-ssh--source-ranges=$(echo "${mylocations[@]}" | tr ' ' ',')
我有 crontab 條目將標準輸出重定向到 /dev/null,這樣我就不會在每次執行時都收到電子郵件。
問題是 gcloud 的輸出到 stderr,即使沒有錯誤,所以我收到這樣的電子郵件:
TITLE: 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 $$. …
我嘗試將
--verbosity=error
,critical
和添加none
到 gcloud 命令,但它們沒有效果。那麼,當 gcloud 成功完成後,如何阻止 gcloud 將此消息發送到 stderr 呢?為什麼它甚至會這樣做?
解決方案是添加這個全域標誌,它適用於所有 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
實際錯誤仍然指向標準錯誤。
我想,它這樣做,因為,你重定向 /dev/null 僅標準輸出。如果有一些錯誤,Cron 也會向您發送電子郵件。也嘗試在 /dev/null stderr 中重定向。在 crontab 命令的末尾添加類似的內容:
> /dev/null 2>&1