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로 전달됩니다.