1 votes

Envoyer un email si script sort une chaîne de caractères

J'ai trouvé cette ligne :

sh script.sh | grep 'NO' 2>&1 > grep.log && /usr/bin/mail -s "grep found something" m@mail.com < grep.log

qui écrira la sortie de script.sh dans grep.log et l'enverra ensuite à une adresse électronique m@mail.com.

Y a-t-il un moyen de supprimer la partie où cela écrit dans grep.log et de simplement envoyer la sortie du script sans avoir à l'écrire dans un fichier ?

3voto

nullDev Points 1778

Vous pourriez capturer la sortie vers une variable Shell au lieu d'un fichier journal :

found_stuff=$(sh script.sh | grep 'NO' 2>&1) &&
    echo "$found_stuff" | /usr/bin/mail -s "grep found something" m@mail.com

(Remarque : la première ligne doit être une simple affectation de variable, et non pas export var= ou local var= ou declare var= ou autre chose de ce genre. Dans ces cas-là, le && dépend de l'état de sortie de la fonction export etc, et non la commande grep .)

2voto

FlasH from Ru Points 203

Pour envoyer directement des mails, vous pouvez utiliser une commande comme celle-ci :

sh script.sh | grep 'NO' 2>&1 | /usr/bin/mail -s "grep found something" m@mail.com

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X