script bash substitution email subject

Liste des GroupesRevenir à fcol configuration 
Sujet : script bash substitution email subject
De : chris (at) *nospam* novazur.fr (Christophe PEREZ)
Groupes : fr.comp.os.linux.configuration
Date : 31. Aug 2022, 22:29:24
Autres entêtes
Organisation : Aioe.org NNTP Server
Message-ID : <20220831162843.43e97042@coffee.novazur.fr>
User-Agent : Claws Mail 4.1.0 (GTK 3.24.34; x86_64-pc-linux-gnu)
Bonjour,

Je poste ici au cas où ce soit la base de ma démarche et de mon
raisonnement qui soit défaillant, sinon, ça ne serait pas spécifique à
Linux mais pourrait aller sur fcou (mais je ne sais pas du tout gérer
le cross-post avec claws-mail).

J'en ai marre de recevoir des mails de tâche cron dont le sujet est le
nom de la commande exécutée. Pour peu que la commande soit un peu
longue, avec pipes et autres, c'est illisible.

Après quelques recherches, j'ai cru comprendre qu'aucun mécanisme
intégré à cronie (ce que j'utilise sur mes gentoo) ne puisse
solutionner mon problème, et que la solution soit de faire une sorte de
wrapper auquel soit envoyé le résultat de la commande afin que ce soit
lui qui envoie le mail au bon sujet.

J'ai donc voulu faire ce script de quelques lignes, mais je ne parviens
pas à trouver le moyen de répondre à toutes les conditions :
- passer le titre du mail en paramètre (facile)
- si aucune sortie de la commande, pas de mail envoyé
- quelque soit le type de sortie de la commande, et surtout quelque
  soit le temps qu'elle met à être produite, elle est transmise par mail
  (avec rsync par exemple, je n'y parviens pas)

La ligne de crontab contiendrait "ma_commande | mon_script.sh"

J'avais essayé de faire :
INPUT=($cat -)
C'était simple, j'avais tout le contenu de la sortie de la commande
dans l'entrée de mon script, mais, s'il n'y a pas d'entrée, il attend
indéfiniment.
J'ai donc du me résoudre, à contrecœur, à utiliser :
INPUTwhile read -t 0.1 line; do
INPUT="$line\n"
done
afin d'avoir le timeout, mais là, si la commande met du temps à
s'exécuter, cela dépasse le timeout, et si j'augmente ce dernier, il
faudrait l'augmenter de façon considérable pour prendre en compte un
maximum de cas, et ça ferait que les commandes sans sortie serait
longtemps bloquées par ce timeout.

J'imagine que c'est un cas d'école, que peut-être certains ici ont déjà
résolu pour leurs besoins.

Merci d'avance.

Pour info, en préambule du script, j'ai :
[ -n "$1" ] && SUBJECT="$1" || SUBJECT="No subject"

Et à la fin :
[ -n "$INPUT" ] && echo "$INPUT" | mail -s "$SUBJECT" $USER


Date Sujet#  Auteur
31 Aug 22 * script bash substitution email subject2Christophe PEREZ
2 Sep 22 `- Re: script bash substitution email subject1Christophe PEREZ

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal