
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:
- Crie o backup.log no diretório /var/log/backup/.
- 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 if
instrução possui sua própria propriedade.