Atualmente, estou trabalhando em uma solução que me notificaria sempre que meu servidor de e-mail não puder transferir arquivos para meu servidor ftp. (No momento, meus logs são girados uma vez por noite e imediatamente enviados para um servidor ftp separado)
A configuração atual é a seguinte:
HOST="..."
USER="..."
PASS="..."
DIR="/var/log/maillogs/"
LATEST="$(ls -t $DIR | head -n 2 | tail-n 1)"
FILE=$(basename $LATEST)
error=$(ftp -n $HOST <<EOF
quote USER $USER
quote PASS $PASS
prompt
lcd /var/log/maillogs/
cd /home/MailLog
put $FILE
quit
EOF
)
if [ $(echo $error | grep "failed")=="failed" ]
then
*Sending Mail via sendmail*
fi
Por algum motivo, a condição if sempre retorna true, então recebo um e-mail, não importa se os arquivos puderam ser transportados ou não.
Alguém sabe como eu teria que alterar a instrução if para realmente receber apenas o e-mail, quando não foi possível transferir o log?
Eu também já tentei o método de
if [ $? -ne 0 ]
, mas não tenho muita certeza de como testar se realmente funciona. Tentei fornecer um IP falso ou logins de usuário com falha, mas, ao fazer isso, recebo apenas erros diferentes.