Eu tenho um script de backup para executar como uma tarefa cron e criar um backup diário de/var/log/messages/. Observe que este script é mais para experiência de aprendizado do que para aplicação real. Adicionei instruções if/else para verificar o código de saída após a execução do comando tar. O script funcionou bem antes, mas depois que adicionei esse recurso ele travou. Código abaixo:
#!/bin/bash
admin="[email protected]"
of=messages-backup-$(date +%Y%m%d).tgz
cd /var/log/
tar -czvf $of messages
if [ $? -eq 0 ]; then
mail -s "Backup of /var/log/messages was successful!" $admin
exit 0
else
mail -s "Backup of /var/log/messages has failed!" $admin
exit 1
fi
cp $of /home/user/
rm -rf $of
Saída:
[root@nidesant2 Scripts]# ./backup.sh
messages
^C
(Interrupt -- one more to kill letter)
Responder1
Mudar
mail -s "Backup of /var/log/messages was successful!" $admin
para
echo hello | mail -s "Backup of /var/log/messages was successful!" $admin
ou
mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null
A primeira opção, você pode usar qualquer texto que desejar no corpo da mensagem. A segunda opção enviará o e-mail com o corpo da mensagem vazio. Repita a mesma alteração para o segundo comando de e-mail para um backup malsucedido.
Para fins de aprendizado, você deve verificar a conclusão bem-sucedida da criação do arquivo tar, copiá-lo e excluí-lo antes de determinar se foi bem-sucedido. Para fazer isso, você poderia fazer isso.
Mudar
tar -czvf $of messages
para
tar -czvf $of messages && cp $of /home/user/ && rm -rf $of
Além disso, com essa alteração você removeria cp $of /home/user/
e rm -rf $of
do final do script.
Então seu if/else será executado com base na conclusão bem-sucedida de todos os três comandos ou na conclusão malsucedida de qualquer um dos três comandos nessa string.