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

0

Eu criei um script bash que executa backups automatizados do EBS na AWS. É iniciado através 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 sucesso ou não (para que eu possa configurar uma verificação do Nagios nele). Há algumas coisas que vou fazer:

  1. Crie o backup.log no diretório / var / log / backup /.
  2. Configure o logrotate para girá-lo diariamente, para facilitar a verificação detectar.

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

Crie uma entrada crontab com um script que possa lançar 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! Se não, a próxima melhor coisa seria criar um script bash que execute backup_snapshots.sh e execute via cron?

    
por ryekayo 24.04.2017 / 21:51

1 resposta

2
#!/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 como mostrado, o que colocará o status de execução do cronjob no arquivo de log de backup. Observe que não há menção em lugar algum da variável $? , pois a declaração if é dona dela.

    
por 24.04.2017 / 22:25

Tags