Como parar a saída stderr do comando gcloud no script cron sem parar toda a saída de erro?

Como parar a saída stderr do comando gcloud no script cron sem parar toda a saída de erro?

Eu tenho um script bash para um cron job que usa o comando do Google Cloud SDK gcloudapós algumas instruções condicionais.

por exemplo.

gcloud compute firewall-rules update allow-ssh --source-ranges=$(echo "${mylocations[@]}" | tr ' ' ',')

É executado usando crontabassim:

*/2 * * * *        /home/user/bin/firewall-update.sh >/dev/null

Eu tenho um MTA de e-mail configurado, para poder receber e-mails sobre erros do servidor, mas o stdout é redirecionado para /dev/null.

O problema é que a saída do gcloud vai para stderr, mesmo quando executada com sucesso, então sempre recebo um e-mail com esse tipo de linha sempre que o script é executado.

TÍTULO: Cron user@host /home/user/bin/firewall-update.sh >/dev/null

Atualizado [https://www.googleapis.com/compute/v1/projects/project-name-4234534/global/firewalls/allow-ssh].

Atualizado [https://www.googleapis.com/compute/v1/projects/project-name-4234534/global/firewalls/allow-mosh].

...

Tentei adicionar --verbosity=errore criticalaos nonecomandos gcloud, mas eles não surtiram efeito.

Por que a saída vai para stderr quando é concluída com êxito e como posso parar de receber esses e-mails e ainda recebê-los quando há um erro?

Responder1

A solução é adicionar este sinalizador global, que se aplica a todos os comandos 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

Os erros reais ainda são direcionados para stderr.

informação relacionada