Newsgroup: it.comp.os.linux.sys
Titolo: cat | grep e segnalazione per email

mi piacerebbe essere informato per email se in un file di log di una
applicazioncina dovesse comparire un determinato messaggio. mi
interessava qualcosa che funzionasse in modalità digest (tipo 1 volta
al giorno) ma va bene anche qualcosa che mandi 1 mail per ogni singolo
messaggio.
voi come fareste?
non penso ci sia da installare qualche software specifico.
credo che sia banale ma non mi viene in mente molto.
Grazie
Lo schiaccianoci
Visita il mio blog 
http://schiaccianoci.blogspot.com

 voi come fareste?
Sicuramente qualcosa in python che sfrutti dnotify,appoggiandosi poi a
dbus,ma anche scribai con cofandina.
Oppure a scelta in cron un bel "grep ANTANI /var/log/foo | mail -s prot
mi@mail"

 voi come fareste?
Io lo faccio usando metalog al posto di syslog.

 voi come fareste?
come immaginavo
syslog-ng: destination mail-alert
qui c'e` un esempio:
http://www.campin.net/newlogcheck.html#syslog-ng
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
  printf $i }'; echo

 voi come fareste?
Io uso logwatch. Puoi aggiungere delle configurazioni per analizzare
altri tipi di log oltre a quelli predefiniti, ma non l'ho mai fatto,
finora.
Bye.
-- 
Alessandro Pellizzari

> voi come fareste?
Per un'analisi realtime, logsurfer o sec dovrebbero fare il
caso tuo. Puoi anche farti qualcosa in casa usando i soliti
strumenti (bash grep tail perl...), ma non vedo perche' non
usare dei tool specifici, visto che ci sono.
Valuta bene se e' necessario implementare una qualche forma
di rate limiting.
Se vuoi avere una panoramica piu' ampia sugli strumenti per 
l'analisi dei log, ti consiglierei un giro nella library di 
http://www.loganalysis.org/
.
Fabio

 voi come fareste?
Io uso da tempo lo script sottostante, l'ho trovato da qualche parte in 
rete e ne ho circa 30 istanze che girano da crontab in momenti diversi. 
lavora in digest e gestisce bene le segnalazioni gia' inviate.
I commenti sono in francese, ma comprensibili.
Saludos
Yahn
-- cut here --
#!/bin/bash
TAIL=tail #commande tail du système
TMP=/var/log/syslog.dated/scripts/tmp   #répertoire temporaire utilisé 
pour stocker les fichiers temporaires
GREP=grep #commande grep du système
MAIL=mail #commande mail du système
KEYWORDS=/var/log/syslog.dated/scripts/tmp/logkeywords #fichier contenant 
les mot clés à rechercher avec grep
MESSAGES=/var/log/messages    #chemin du fichier messages
HACKMESSAGES=/var/log/syslog.dated/scripts/tmp/log #chemin du fichier 
contenant les rapports
MESSAGESSIZE=/var/log/syslog.dated/scripts/tmp/logsize #dernière taille 
du fichier messages
HOSTNAME=`hostname` #nom du hôte
DATE=`date +%d/%m/%y_%H:%M:%S` #date et heure
RESULT=0
OLDSIZE=0
#NEWSIZE=`filesize $MESSAGES`
NEWSIZE=`ls -l $MESSAGES | awk {' print $5 '}`
DIFFERENCE=0
SYSADMIN="SYSADMIN@$HOSTNAME"  #nom de l'administrateur système
umask 077 #tout fichier créé portera l'accès rwx------
#Si le fichier messagesize existes récupère son contenu
if [ -f $MESSAGESSIZE ]; then
   OLDSIZE=`cat $MESSAGESSIZE`
fi
#Calcule la différence de taille entre l'ancienne taille du fichier 
messages et la nouvelle
#le résultat $DIFFERENCE sera utilisé pour $TAIL -c
let "DIFFERENCE = $NEWSIZE - $OLDSIZE"
#Si la différence=0 ne fait rien
if [ "$DIFFERENCE" -ne 0 ]; then
   $TAIL -c $DIFFERENCE $MESSAGES > $TMP/check.$$
#MAJ de $MESSAGESSIZE
   echo "$NEWSIZE" > $MESSAGESSIZE
   if $GREP -f $KEYWORDS $TMP/check.$$ > $TMP/checkoutput.$$; then
 echo 
"========================================================================
=======" >> $TMP/report.$$
 echo "$DATE   Allarme" >> $TMP/report.$$
 echo 
"========================================================================
=======" >> $TMP/report.$$
 cat $TMP/checkoutput.$$ >> $TMP/report.$$
 RESULT=1
 cat $TMP/report.$$ >> $HACKMESSAGES
   fi
fi
#Si il y a eu des contenus suspects dans le fichier messages, le signal à 
$SYSADMIN@$HOSTNAME
if [ "$RESULT" -eq 1 ]; then
   echo "Mail"
   cat $TMP/report.$$ | $MAIL -s "Allarme" $SYSADMIN
fi
rm -f $TMP/check.$$ $TMP/checkoutput.$$ $TMP/report.$$
-- cut here --

 dbus,ma anche scribai con cofandina.
Occhiello di privilegio come se fosse Antani per lei!
Complimenti! ;)
-- 
[Powered by] : Debian GNU/Linux "etch" @ 2.6.15.2