Adicionando um código de saída ao arquivo de log

Adicionando um código de saída ao arquivo de log

Eu criei um script bash que executa backups automatizados do EBS na AWS. É iniciado por meio de um cronjob:

0 2 * * * /bin/bash /root/backup_snapshots.sh > backup.log 2>&1

Isso funciona perfeitamente, mas a próxima coisa que quero fazer é adicionar um código de saída para saber se o script é executado com êxito ou não (para que eu possa configurar uma verificação do Nagios nele). Há algumas coisas que farei:

  1. Crie o backup.log no diretório /var/log/backup/.
  2. Configure o logrotate para girá-lo diariamente, para tornar essa verificação mais fácil de detectar.

Mas uma pergunta que tenho é: é possível que o cron escreva um código de saída no arquivo backup.log que criei? Ou devo ir com este tipo de implementação:

Crie uma entrada crontab com um script que possa iniciar o script real E tenha um código de saída como este:

#!/bin/bash
/root/backup_snapshots.sh 2> /dev/null
if [ $? -eq 0 ]
then
  echo "PASS"
else
  echo "FAIL" >&2
fi

Eu quero tornar isso o mais simples possível, então se o cron puder fazer isso, ótimo! Caso contrário, a próxima melhor coisa seria criar um script bash que execute backup_snapshots.sh e execute via cron?

Responder1

#!/bin/bash
exec 1>/var/log/backup/backup_sbapshots.log 2>&1
if /root/backup_snapshots.sh
then
  echo "PASS"
else
  echo "FAIL"
fi

Faça seu script cron conforme mostrado, o que colocará o status de execução do cronjob no arquivo de log de backup. Observe que não há menção à $?variável em nenhum lugar, pois a ifinstrução possui sua própria propriedade.

informação relacionada