Назад | Перейти на главную страницу

Как подавить вывод `gcloud compute firewall-rules update`, если ошибок нет?

У меня есть сценарий bash, работающий как задание cron, в котором есть несколько команд gcloud.

например.

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

У меня есть запись crontab, перенаправляющая 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].

...

Я пробовал добавить --verbosity=error, critical и noneк командам 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

Фактические ошибки по-прежнему отправляются на stderr.

Я полагаю, это так, потому что вы перенаправляете ТОЛЬКО в / dev / null stdout. Cron также отправит вам электронные письма, если есть какие-то ошибки. Попробуйте также перенаправить в / dev / null stderr. Добавьте в конец вашей команды crontab что-то вроде этого:

> /dev/null 2>&1