Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 roll?


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  roll 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 roll
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

Hizoka a écrit :

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