#1 Le 10/12/2020, à 17:28
- herveD
envoyer par mail log uniquement si erreur
Bonjour
J'arrive globalement à faire des synchros mais je souhaite affiner car je ne m'y retrouve dans un gros fichier de log pour des dizaines de milliers de ligne (synchonisées)
J'ai mis
18 17 * * * rsync -agv -u --exclude /.Trash-1000/ --delete-after /media/rvnux/4958-6F89/source/ /media/rvnux/4958-6F89/cible/ >> /home/rvnux/Documents/log_`date +\%Y-\%M-\%H` 2>&1
Est-ce qu'il serait possible d'envoyer par mail uniquement le log quand celui-ci comporte des erreurs. parcouru la doc et moteur de recherche mais j'ai l'impression que non.
vous confirmez
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#2 Le 10/12/2020, à 18:48
- Hizoka
Re : envoyer par mail log uniquement si erreur
Bonsoir,
c'est évidemment possible mais plus facile via un script.
1) Rsync > /tmp/retours
2) Rsync a-t-il rencontré une erreur ?
2a) Si oui, envoi du fichier /tmp/retours par mail.
2b) Non, dans ce cas on supprime le fichier /tmp/retours
Il faut mettre à jour le crontab pour qu'il exécute le script et non plus la commande rsync.
Dernière modification par Hizoka (Le 10/12/2020, à 18:49)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 10/12/2020, à 19:01
- herveD
Re : envoyer par mail log uniquement si erreur
Bonsoir
Je suis arrivé (avec beaucoup de temps à faire cette synchro), mais je ne vois pas les commandes à mettre dans un script .sh ?
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#4 Le 11/12/2020, à 14:14
- herveD
Re : envoyer par mail log uniquement si erreur
Bonjour
Et en même temps j'en rajoute car je viens de m'apercevoir qu'une synchro remplissait mon disque système si le disque cible de mon cron était absent. Ce qui arrive fréquemment car je dépose ce disque dans un autre lieu.
su coup il serait aussi nécessaire de tester si le disque cible est présent !?
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#5 Le 11/12/2020, à 18:07
- Hizoka
Re : envoyer par mail log uniquement si erreur
T'aurais pu chercher un minimum quand même...
Un truc du genre :
[[ ! -e "/media/rvnux/4958-6F89/cible/" ]]
then
echo "Le dossier /media/rvnux/4958-6F89/cible/ n'existe pas"
exit 1
fi
rsync -agv -u --exclude /.Trash-1000/ --delete-after /media/rvnux/4958-6F89/source/ /media/rvnux/4958-6F89/cible/ >> /home/rvnux/Documents/log_$(date +\%Y-\%M-\%H) 2>&1
retour_rsync=$?
if [[ $retour_rsync != 0 ]]
then
echo "rsync à renvoyer le code $retour_rsync ! Envoi d'un mail"
# commande du mail en liant le fichier /home/rvnux/Documents/log_$(date +\%Y-\%M-\%H)
exit 1
else
echo "rsync a fini correctement son travail"
exit 0
fi
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 11/12/2020, à 22:30
- herveD
Re : envoyer par mail log uniquement si erreur
Bonsoir
ben si j'avai cherché, j'y auria passé des heures et probabelemnt cela n'aurait pas fonctionne.
Il faut dire que je suis capable de lancer une ligne mais dès qu'il y a des tests, je suis vite perdu. désolé
En tout les cas, j'ai copié ton code dans un fichier synchro-msg.sh que j'ai rendu executable ;e ndouble cliquant dessus rien ne s'est passé
- la cible est bien présente
- un test fait avec une seule ligne fonctionne
echo "rsync a fini correctement son travail" >> /home/rvnux/Documents/log-test-sh_$(date +\%Y-\%M-\%H) 2>&1
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#7 Le 11/12/2020, à 23:23
- Watael
Re : envoyer par mail log uniquement si erreur
if [[ $retour_rsync != 0 ]]
attention! = est un opérateur lexical : il compare des mots.
=>
if (( $ret_rsync ))
évaluation arithmétique : vraie si la valeur de la variable est différente de zéro.
Dernière modification par Watael (Le 11/12/2020, à 23:24)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 11/12/2020, à 23:33
- herveD
Re : envoyer par mail log uniquement si erreur
Bonsoir
J'allais éteindre et j’ai fais un nouvel essai
Cela n'a pas plus fonctionné
De plus j'ai renommé le nom de la cible pour simulation d'absence et la encore je n"ai rien eu dans les logs !
Par contre si je laisse dans le fichier uniquement la ligne rsync -> cela fonctionne correctement
Je remets le test en entier
[[ ! -e "/media/rvnux/4958-6F89/cible/" ]]
then
echo "Le dossier /media/rvnux/4958-6F89/cible/ n'existe pas"
exit 1
fi
rsync -agv -u --exclude /.Trash-1000/ --delete-after /media/rvnux/4958-6F89/source/ /media/rvnux/4958-6F89/cible/ >> /home/rvnux/Documents/log_$(date +\%Y-\%M-\%H) 2>&1
retour_rsync=$?
if (( $ret_rsync ))
then
echo "rsync à renvoyer le code $retour_rsync ! Envoi d'un mail"
# commande du mail en liant le fichier /home/rvnux/Documents/log_$(date +\%Y-\%M-\%H)
exit 1
else
echo "rsync a fini correctement son travail"
exit 0
fi
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#9 Le 11/12/2020, à 23:42
- Watael
Re : envoyer par mail log uniquement si erreur
Cela n'a pas plus fonctionné
quel est le message d'erreur précisément ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 12/12/2020, à 10:45
- herveD
Re : envoyer par mail log uniquement si erreur
Bonjour
Aucun message ni dans les logs ni vu ailleurs! alors que si je mets uniquement la ligne rsync cela s’exécute en quelques secondes (vu que c'est un test)
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#11 Le 12/12/2020, à 10:53
- Hizoka
Re : envoyer par mail log uniquement si erreur
Oups, merci Watael, je suis allé trop vite.
Et j'ai zappé le if devant [[ ! -e "/media/rvnux/4958-6F89/cible/" ]]
Tu as ajouté #!/bin/bash au début du script ?
De plus j'ai renommé le nom de la cible pour simulation d'absence et la encore je n"ai rien eu dans les logs !
Si tu veux voir les messages de retours, il faut le lancer en console :
bash le_script.sh
#!/bin/bash
if [[ ! -e "/media/rvnux/4958-6F89/cible/" ]]
then
echo "Le dossier /media/rvnux/4958-6F89/cible/ n'existe pas"
exit 1
fi
rsync -agv -u --exclude /.Trash-1000/ --delete-after /media/rvnux/4958-6F89/source/ /media/rvnux/4958-6F89/cible/ >> /home/rvnux/Documents/log_$(date +\%Y-\%M-\%H) 2>&1
retour_rsync=$?
if (( $ret_rsync ))
then
echo "rsync à renvoyer le code $retour_rsync ! Envoi d'un mail"
# commande du mail en liant le fichier /home/rvnux/Documents/log_$(date +\%Y-\%M-\%H)
exit 1
else
echo "rsync a fini correctement son travail"
exit 0
fi
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#12 Le 14/12/2020, à 12:11
- herveD
Re : envoyer par mail log uniquement si erreur
Bonjour,
Effectivement j'aurai pu voir aussi le if
Non je n'avai pas mis "#!/bin/bash" je lançais en double cliquant dessus car je voyais bien le log
En recopiant le dernier script
a) essai lorsque la cible n'existe pas
en lançant dans la console , j'ai bien
bash test-synchro-msg.sh
Le dossier /media/rvnux/4958-6F89/cible/ n'existe pas
A tout hasard car moins important, est-ce possible de l'envoyer ailleurs pour le voir 1 fois (genre notification)?
b) essai lorsque la cible existe et que tout ce passe bien
j'ai le retour dans les logs de tout ce qui c'est passé dans le log daté.
c) essai lorsque la cible existe et problème dans la synchro de fichiers
Quelle commande pour envoyer un mail en cas d'erreur de synchronisation d'un fichier ?
A terme je ne veux plus rien stocker dans un fichier log, je peux enlever sans souci "2>&1" (cela n'aurai pas de répercussion sur le besoin d'envoyer un mail)?
@+
Dernière modification par herveD (Le 15/12/2020, à 09:47)
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#13 Le 16/12/2020, à 10:10
- herveD
Re : envoyer par mail log uniquement si erreur
Bonjour,
J'abandonne l'envoi par mail ; après quelques recherches cela me semble laborieux et problématique à maintenir.
Je me demande s'il est possible de faire la même chose en envoyant une notification dans le panneau d'ubuntu sur autre fil
Merci de m'avoir aidé
https://forum.ubuntu-fr.org/viewtopic.p … #p22389245
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne
#14 Le 17/12/2020, à 09:06
- Hizoka
Re : envoyer par mail log uniquement si erreur
Tu n'as pas la commande mail ?
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#15 Le 17/12/2020, à 11:09
- herveD
Re : envoyer par mail log uniquement si erreur
Bonjour
Tu n'as pas la commande mail ?
Non je ne l'ai pas; j'ai fais des recherches mais j'ai vu que ce n'était pas si simple.
Réflexions faites il faut être sur que le mail arrive et pas dans les spams !! et si je change d'email (maintenabilité)
Sur l'autre fil, j’ai une notification ubuntu ce qui me semble une bonne piste.
Après il me reste sur l'autre fil à faire des tests sur une différence de date (en jour) et pour effacer périodiquement le fichier.
Peut-être pourrais-tu regarder si tu es plutôt à l'aise avec cela !?
@+
Ma config actuelle : Ubuntu 24.04 - 64b - INTEL NUC 11 PRO - https://clibre.eu/
Hors ligne