Aller au contenu

[Résolu] Script rsync + rapport mail


Myze

Messages recommandés

Bonjour,

Je sollicite votre aide pour la mise en place d'un script en crontab, avec ma commande rsync (qui fonctionne).

Je souhaiterais ajouter l'envoi d'un mail quand la synchronisation est fini avec le résultat voir l'affichage complet de celle ci.

Pour information j'ai commencé un .sh:

#!/bin/bash
rsync -avzruh -delete-after --progress --no-owner --no-group /var/www/a_backuper -e "ssh -p 2018" user@adresse_ip:/mnt/backup/backup_srvxxx

Maintenant je ne sais pas trop quoi faire pour recevoir un mail avec le résultat de la commande.

Merci d'avance pour l'aide,

Lien vers le commentaire
Partager sur d’autres sites

Rapidement  si tu rajoutes :

if [ $? -eq 0 ]
then
/usr/lib/sendmail -v "rsync backup termoiné" tonmail@xxxx.com<<EOF
rsync backup Terminé @ $(date) for $(hostname)
EOF
else
/usr/lib/sendmail -v tonmail@xxx.com<<EOF
"rsync backup loupé" @ $(date) for $(hostname)
EOF
fi

 

Lien vers le commentaire
Partager sur d’autres sites

Merci du retour, cela donnerai donc:

#!/bin/bash
rsync -avzruh -delete-after --progress --no-owner --no-group /var/www/a_backuper -e "ssh -p 2018" user@adresse_ip:/mnt/backup/backup_srvxxx
if [ $? -eq 0 ]
then
/usr/lib/sendmail -v "rsync backup terminé" tonmail@mail.com<<EOF
rsync backup Terminé @ $(date) for $(hostname)
EOF
else
/usr/lib/sendmail -v tonmail@mail.com<<EOF
"rsync backup loupé" @ $(date) for $(hostname)
EOF
fi

 

Lien vers le commentaire
Partager sur d’autres sites

pour info $? est le code de sortie de la commande précédente et si elle est > 0 c'est qu'il y a eu une erreur, elle quitte en échec.

ce script vaut rsync blabla && echo "réussite" || echo "échec"

Version plus simple à mon goût, incluant le log :

#!/bin/bash
$logfile = $(mktemp /tmp/rsync.XXXXXXXX.log)

rsync -avzruh -delete-after --progress --no-owner --no-group /var/www/a_backuper -e "ssh -p 2018" user@adresse_ip:/mnt/backup/backup_srvxxx >$logfile 2>&1

if [ $? -eq 0 ]; then
	mail -s "rsync backup terminé @ $(date) for $(hostname)" mail@example.com < $logfile
else
	mail -s "rsync backup erreur @ $(date) for $(hostname)" mail@example.com < $logfile
fi

rm -f $logfile

exit 0

 

Lien vers le commentaire
Partager sur d’autres sites

Merci, j'ai un retour en erreur au lancement du script:

user@srvxxx:~# bash /home/jeanmi/scripts/backup_rsync.sh
/home/jeanmi/scripts/backup_rsync.sh: ligne 2: = : commande introuvable
/home/jeanmi/scripts/backup_rsync.sh: ligne 4: $logfile : redirection ambiguë
/home/jeanmi/scripts/backup_rsync.sh: ligne 9: $logfile : redirection ambiguë

 

Lien vers le commentaire
Partager sur d’autres sites

Pourtant elle existe bien,

~# mktemp --version
mktemp (GNU coreutils) 8.25
Copyright © 2016 Free Software Foundation, Inc.
License GPLv3+ : GNU GPL version 3 ou ultérieure
<http://gnu.org/licenses/gpl.html>
C'est logiciel libre, vous êtes libre de le modifier et de le redistribuer.
Ce logiciel n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE, dans les limites
autorisées par la loi applicable.

Écrit par Jim Meyering et Eric Blake.

Après test, j'ai supprimé l'espace entre le "=" et le "$" maintenant j'ai ce message la:

:~# bash /home/user/scripts/backup_rsync.sh
/home/jeanmi/scripts/backup_rsync.sh: ligne 2: =/tmp/rsync.ljMv2omi.log: Aucun fichier ou dossier de ce type
/home/jeanmi/scripts/backup_rsync.sh: ligne 4: $logfile : redirection ambiguë
/home/jeanmi/scripts/backup_rsync.sh: ligne 9: $logfile : redirection ambiguë

 

Lien vers le commentaire
Partager sur d’autres sites

Super c'est ok.

Merci à tous pour votre coup de main :yes:

Pour info le script définitif est:

#!/bin/bash
logfile=$(mktemp /tmp/rsync.XXXXXXXX.log)

rsync -avzruh -delete-after --progress --no-owner --no-group /var/www/a_backuper -e "ssh -p 2018" user@adresse_ip:/mnt/backup/backup_srvxxx >$logfile 2>&1

if [ $? -eq 0 ]; then
	mail -s "rsync backup terminé @ $(date) for $(hostname)" mail@example.com < $logfile
else
	mail -s "rsync backup erreur @ $(date) for $(hostname)" mail@example.com < $logfile
fi

rm -f $logfile

exit 0

 

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Ben c'est un peu la base du scripting, il faut poser des controles. Tu a vite fait de faire de la merde et de freezer ta machine ou la ralentir avec un script qui fait une boucle.

J'ai un script de ce genre qui tourner a 1h et cron m'envoie le résultat par mail quand c'est finit :)

Il y a des fois ou mettre ce contrôle m'a bien servi puisque la synchro a durée 43h xD

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...