Gcloud

沒有錯誤時如何抑制gcloud compute firewall-rules update輸出?

  • August 14, 2020

我有一個 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

引用自:https://serverfault.com/questions/1030015