Script envoie de mail quand il ne fonctionne pas

Bonjour,
J’aimerai modifier mon script qui actuellement m’envoie un mail chaque soirs quand les backups se sont terminées, que cela fonctionne ou que cela ne fonctionne pas.
Cependant cela devient pénible, et je souhaite actuellement recevoir un mail uniquement quand ça ne fonctionne pas.

Le Script d’envoie du mail pour une partie de l’intranet

[code]#! /bin/bash
cd /home
rm -rf /home/backup/*
DATE=date '+%F-%H'h

tar -cvf /home/backup/$DATE-intranet.qs-t.fr.tar.gz /home/intranet.qs-t.fr

FTP_HOST='XX.XX.XX.XX’
FTP_PORT='21’
FTP_USER='public’
FTP_PASSWD='secret’
DATE=date '+%F-%H'h

FIC=/home/backup/*.tar.gz
lftp -u $FTP_USER,$FTP_PASSWD $FTP_HOST << END_SCRIPT
mput $FIC
quit
END_SCRIPT

echo “” >> mail.txt
echo “####################### Backup http://intranet.qs-t.fr #######################” >> mail.txt
echo “” >> mail.txt
echo “Fichier disponible au telechargement dans le dossier /home/backup sur QST-WEB” >> mail.txt
echo “” >> mail.txt
ls -l /home/backup >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt
echo “Memoire de la machine” >> mail.txt
echo “” >> mail.txt
free -m >> mail.txt
echo “” >> mail.txtd’échange nommé "/home/Scripts/.intranet.qst-fr.sh.swp"
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt

df -h /home/backup/ >> mail.txt
(1) Un autre p
Si c’est le cas, faites attention à ne pas vous retrouver avec
cat /home/mail.txt | mail mail@mail.mail -s "$DATE Backup http://intranet.qs-t.fr"
cat /home/mail.txt | mail smail@mail.mai -s “$DATE Backup http://intranet.qs-t.fr

(2)
rm -rf /home/mail.txtutilisez “:recover” ou “vim -r /home/Scripts/intranet.qst-fr.sh”
[/code]

Script de back des intranets moins volumineux avec envoie du mail.

[code]#! /bin/bash
cd /home
rm -rf /home/backup/*

FTP_HOST='XX.XX.XX.XX’
FTP_PORT='21’
FTP_USER='public’
FTP_PASSWD='secret’
DATE=date '+%F-%H'h

tar -cvf /home/backup/$DATE-mironet.qs-t.fr.tar.gz /home/mironet.qs-t.fr
tar -cvf /home/backup/$DATE-qst.fr.tar.gz qst.fr /home/qst.fr
tar -cvf /home/backup/$DATE-qstoptic.fr.tar.gz /home/qstoptic.fr
tar -cvf /home/backup/$DATE-valytis.fr.tar.gz /home/valytis.fr

tar -cvf /home/backup/$DATE-Mutualise.tar.gz /home/backup/*.tar.gz

FIC=/home/backup/$DATE-Mutualise.tar.gz
lftp -u $FTP_USER,$FTP_PASSWD $FTP_HOST << END_SCRIPT
mput $FIC
quit
END_SCRIPT

echo “” >> mail.txt
echo “####################### Backup Mutualise #######################” >> mail.txt
echo “” >> mail.txt
echo “Fichier disponible au telechargement dans le dossier /home/backup sur QST-WEB” >> mail.txt
echo “” >> mail.txt
ls -l /home/backup >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt
echo “Memoire de la machine” >> mail.txt
echo “” >> mail.txt
free -m >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt

df -h /home/backup/ >> mail.txt

cat /home/mail.txt | mail mail@mail.com -s "$DATE Backup Mutualise"
cat /home/mail.txt | mail smail mail@mail.com -s “$DATE Backup Mutualise”

rm -rf /home/mail.txt
[/code]

Que dois-je faire pour que le mail s’envoie uniquement en cas d’erreur?

cdt

Oni’

Ce n’est pas bien compliqué mais je laisse à François le soin de te répondre car c’est ce que sont “surveillance” fait.

Oui j’imagine que je ne suis pas le premier a demander cela.
Mais je trouve pas de solution concluante sur Google.

CDT

Ça donnerait ça par exemple, le message (à changer du coup) est envoyé ssi un des codes retour est non nul donc en cas d’erreur…

[code]#! /bin/bash
cd /home
rm -rf /home/backup/*

FTP_HOST='XX.XX.XX.XX’
FTP_PORT='21’
FTP_USER='public’
FTP_PASSWD='secret’
DATE=date '+%F-%H'h
ERREUR=0
tar -cvf /home/backup/$DATE-mironet.qs-t.fr.tar.gz /home/mironet.qs-t.fr
ERREUR=$(expr $ERREUR + $?)
tar -cvf /home/backup/$DATE-qst.fr.tar.gz qst.fr /home/qst.fr
ERREUR=$(expr $ERREUR + $?)
tar -cvf /home/backup/$DATE-qstoptic.fr.tar.gz /home/qstoptic.fr
ERREUR=$(expr $ERREUR + $?)
tar -cvf /home/backup/$DATE-valytis.fr.tar.gz /home/valytis.fr
ERREUR=$(expr $ERREUR + $?)
tar -cvf /home/backup/$DATE-Mutualise.tar.gz /home/backup/*.tar.gz
ERREUR=$(expr $ERREUR + $?)

FIC=/home/backup/$DATE-Mutualise.tar.gz
lftp -u $FTP_USER,$FTP_PASSWD $FTP_HOST << END_SCRIPT
mput $FIC
quit
END_SCRIPT
ERREUR=$(expr $ERREUR + $?)
echo “” >> mail.txt
echo “####################### Backup Mutualise #######################” >> mail.txt
echo “” >> mail.txt
echo “Fichier disponible au telechargement dans le dossier /home/backup sur QST-WEB” >> mail.txt
echo “” >> mail.txt
ls -l /home/backup >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt
echo “Memoire de la machine” >> mail.txt
echo “” >> mail.txt
free -m >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt
echo “###################################################################” >> mail.txt
echo “###################################################################” >> mail.txt
echo “” >> mail.txt

df -h /home/backup/ >> mail.txt

if [ $ERREUR -gt 0 ] ; then
cat /home/mail.txt | mail mail@mail.com -s "$DATE Backup Mutualise"
cat /home/mail.txt | mail smail mail@mail.com -s "$DATE Backup Mutualise"
fi

rm -rf /home/mail.txt[/code]

Bonjour,
Et merci, cependant dans cette option cela ne va pas me remonter d’erreur si les backups ne fonctionne pas.
Mais plus si il n’arrive pas a écrire dans le mail non ?

Non, à chaque fois, ERREUR est incrementé du code de retour des commandes tar et ftp qui est 0 si tout va bien. Le mail est rédigé de toute façon et n’est envoyé que ERREUR > 0 soit une des commandes terminées en erreur.

Bien évidemment ce script est à adapter mais le principe est là.

Et vous remerciant, je vais travailler a partir de votre base.

VCordialement

[code]#! /bin/bash

Variables

SSH_HOST=‘172.16.0.13’
SSH_USER=‘root’
REPERTOIRE_DESTINATION=’/home/srv/intranet.qst.fr’
ARCHIVE=’$DATE-intranet.qst.fr.tar.gz’
DATE=date '+%F-%H'h
ERREUR=0

Variables

#tar zcf - $REPERTOIRE_A_ENVOYER | ncftpput -c -u $USER -p $PASS $HOST $REPERTOIRE_DESTINATION/$ARCHIVE.tar.gz#

tar -cvf /tmp/$DATE-intranet.qst.fr.tar.gz /home/web/intranet.qs-t.fr/ 2>> /root/intranet_mail.txt && scp /tmp/$DATE-intranet.qst.fr.tar.gz root@$SSH_HOST:/home/srv/intranet.qst.fr 2>> /root/mail.txt && rm -rf /tmp/$DATE-intranet.qst.fr.tar.gz
ERREUR=$(expr $ERREUR + $?)

if [ $ERREUR -gt 0 ] ; then
cat /root/intranet_mail.txt | ERREUR BACKUP INTRANET.QST.FR mail@mail.com -s "$DATE ERREUR BACKUP INTRANE.QST.FR"
fi

rm -rf /root/intranet_mail.txt

[/code]

Bonjour à nouveau.
Juste pour valider mon script. Est-ce que je n’ai pas fais d’erreur, est que mon mail retournera bien les erreurs produites lors de la compression/copier ssh ?

Je n’ai aucun moyen de tester a moins d’attendre que cela plante miraculeusement ( c’est le cas de le dire ).
Je me doute que vous n’êtes pas omniscient, mais sait t’on jamais.

Cordialement :slightly_smiling:

J’ai du mal à comprendre cette ligne:

Ne serait ce pas

(les puristes diront

Par ailleurs, vu qu’il n’y a qu’un seul code de retour, là ça peut être simplifié en

[code]#! /bin/bash

Variables

SSH_HOST=‘172.16.0.13’
SSH_USER=‘root’
REPERTOIRE_DESTINATION=’/home/srv/intranet.qst.fr’
ARCHIVE=’$DATE-intranet.qst.fr.tar.gz’
DATE=date '+%F-%H'h

Variables

#tar zcf - $REPERTOIRE_A_ENVOYER | ncftpput -c -u $USER -p $PASS $HOST $REPERTOIRE_DESTINATION/$ARCHIVE.tar.gz#

tar -cvf /tmp/$DATE-intranet.qst.fr.tar.gz /home/web/intranet.qs-t.fr/ 2>> /root/intranet_mail.txt && scp /tmp/$DATE-intranet.qst.fr.tar.gz root@$SSH_HOST:/home/srv/intranet.qst.fr 2>> /root/mail.txt && rm -rf /tmp/$DATE-intranet.qst.fr.tar.gz

if [ $? -gt 0 ] ; then
cat /root/intranet_mail.txt | mail mail@mail.com -s "$DATE ERREUR BACKUP.QST.FR"
fi

rm -rf /root/intranet_mail.txt

[/code]

En vous remerciant une fois de plus.