Find: recevoir 1 mail si et seulement si détection positive

Salut,

J’ai mis une nouvelle tâche cron en place.

00 * * * * date >> /var/log/chercheprocess.log && /usr/bin/chercheprocess >> /var/log/chercheprocess.log

Et pour bien faire, j’aimerai réceptionner un mail seulement si il y a une détection positive, à savoir:

find /var/log/chercheprocess.log -type f | xargs fgrep "1 processus" | mail -s "Détection 1 proccessus caché: voir /var/log/chercheprocess.log" root
Pour le coup, j’ai fossé le log.

:~# cat /var/log/chercheprocess.log jeudi 7 juin 2012, 15:26:01 (UTC+0200) Recherche de processus cach�s F.Boisson Dec2003 .../ 1 processus cach�(s) trouv�(s)
À la réception c’est ok!

Extrait de gmail.

[quote]Détection 1 proccessus caché: voir /var/log/chercheprocess.log

1 processus caché(s) trouvé(s)[/quote]
Mais si je vire ce faux positif que j’ai crée, le mail reçu est vide, page blanche!

J’aimerai bien que cette dernière commande m’envoie un mail (seulement) si find à trouver 1 processus caché.

Manque un truc dans cette commande, et je sais pas comment faire … :083

Réception d’un mail si et seulement si il y a eu la détection d’un process.

Heeeuu, j’ai oublié un truc.

Cette commande je voudrai la mettre dans mon crontab également.

Salut,

Je reçois deux mails …

[quote]root
xxx@gmail.com 7 juin 2012 19:29
À : root [/quote]
Ce premier est vide, donc sans intérêt.

Celui-ci est rassurant, bien sur, mais il serait plus avisé d’avoir réception, que dans le cas d’une détection réelle, quoique … en souhaitant que ceci n’arrive jamais. :wink:

Salut,

[code]00 * * * * date >> /var/log/chercheprocess.log && /usr/bin/chercheprocess >> /var/log/chercheprocess.log

01 * * * * find /var/log/chercheprocess.log -type f 2>&1 | xargs fgrep “1 processus”

[/code]

J’obtiens le résultat rechercher.

J’ai coller un cron toutes les minutes, histoire de jongler.

À un temps x, à la mano je modifie le fichier chercheprocess.log. “0 processus” à valeur 1

Je réceptionne un mail ayant pour contenu “1 processus caché(s) trouvé(s)”.

Il y a très certainement plus propre, ou plutôt, adéquate. J’espère … :083

Mais, l’entête reçu ne me plaît pas, le jour ou cette situation se produira, je risque de passer à côté.

Bien trop confus au premier coup d’œil, parmi tant d’autres … :confused:

En image.


Comment changé cette entête ?

Cette tâche cron va donner vie à d’autres nombreux bébé de ce gabarit, alors …

Un truc me viens au neurone, peut on coloriser ces entêtes ?

Yo !

Ton find ne sert pas à grand chose puisque tu connais déjà le nom du fichier concerné, il peut facilement être remplacé par un test d’existence du fichier [ -r /var/log/chercheprocess.log ] (-r vérifie que le fichier existe et qu’il est lisible).
Du coup en passant à un modèle “if” au lieu de “pipe” c’est beaucoup plus facile :

if [ -r /var/log/chercheprocess.log ] && grep -E '[1-9]([0-9]+)? processus' /var/log/chercheprocess.log >/dev/null; then echo 'Un ou plusieurs processus caché(s) ont été détectés." | mail -s "Détection processus caché(s) : voir /var/log/chercheprocess.log" root fi
Pour éviter les ennuis tu colles ça dans un script (n’oublie pas le shebang et de le rendre exécutable), et c’est ce script que tu appelleras à partir du cron.
J’espère juste que j’ai pas fait une boulette, normalement ça devrait être bon mais à cette heure là on sait jamais… :030 :033

Salut,
J’utilise aussi ce genre de filtre.

if grep -q "Erreur" $LOG then mailx -s "Erreur sur Script" admin@domaine.tld < $LOG ; exit 1 else mailx -s "Succès backup" admin@domaine.tld < $LOG ; # ne mets rien si tu ne veux pas d'alerte fi

Salut,

Syam, tu m’as refilé le virus, :smiling_imp: la programmation shell … depuis le temps que je voulais m’y coller, et ben c’est fait, ch’suis déjà accroc ! :laughing:

Des idées de scripts (depuis pas mal de mois) j’en ai plein les poches … Alors à cœur vaillant … :dance:

Sinon, Impeccable! :023

[code]:~$ bash -x chercheprocess.sh

  • ‘[’ -r /var/log/chercheprocess.log ‘]’
  • grep -E ‘1-9? processus’ /var/log/chercheprocess.log
  • echo ‘Un ou plusieurs processus caché(s) ont été détectés.’
  • mail -s ‘Détection processus caché(s) : voir /var/log/chercheprocess.log’ root
    :~$[/code]

Juste une coquille, une erreur de frappe, une simple quote en lieu et place d’une double, c’est tout. Fonctionne du tonnerre! :clap:

[quote]:~$ cat /usr/local/bin/chercheprocess.sh
if [ -r /var/log/chercheprocess.log ] && grep -E ‘1-9? processus’ /var/log/chercheprocess.log >/dev/null; then
echo [size=150]"[/size]Un ou plusieurs processus caché(s) ont été détectés." | mail -s “Détection processus caché(s) : voir /var/log/chercheprocess.log” root
fi

:~$[/quote]

Connais tu d’autres doc, tuto pour débutant, de cette acabit. En fr serait un plus … :unamused:

Voilà de quoi occuper mes soirées d’été, l’hiver ne sera pas de trop non plus … :005

Merci à tout deux!