log monitoring + esecuzione script

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
Slack_Eater
Linux 1.x
Linux 1.x
Messaggi: 163
Iscritto il: gio 14 feb 2008, 21:29
Nome Cognome: Giuseppe Scalzi
Slackware: 13.37
Kernel: 2.6.38.2-smp
Desktop: KDE 4.7.0
Località: Svizzera
Contatta:

log monitoring + esecuzione script

Messaggio da Slack_Eater »

Ciao a tutti,

sto cercando un software che mi permetta di eseguire uno script quando avviene un determinato cambiamento su un file di log,
possibilmente deve funzionare anche su OpenBSD.

In pratica il programma deve "restare in ascolto" e in caso di un cambiamento ben specifico nel file, per esempio aggiunta di una linea contenete xxx, deve
fare partire un script sh.

Voi ne conoscete qualcuno?

Grazie!! 8) 8)

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: log monitoring + esecuzione script

Messaggio da targzeta »

Bhé, senza scomodare dei programmi, una soluzione potrebbe essere uno script eseguibile (ad esempio casa.sh):

Codice: Seleziona tutto

#!/bin/sh
while [ 1 -eq 1 ]; do
  if grep -m 1 xxx >/dev/null; then
    script_da_eseguire
  fi
done
e poi mettere in pipe:

Codice: Seleziona tutto

tail -f log_file | casa.sh
Un altra soluzione è quella di usare awk con la funzione system()

Codice: Seleziona tutto

tail -f log_file | awk '/xxx/{ system("path_dello_script_da_eseguire") }'
La differenza tra i due è che mentre il primo, la prima volta che lo avvii, esegue lo script solo una volta indipendentemente dal numero di xxx che già ci sono, il secondo esegue lo script tante volte per quante volte trova xxx. Spero di essermi spiegato bene :)

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
dr4kk4r
Linux 0.x
Linux 0.x
Messaggi: 5
Iscritto il: gio 24 mag 2007, 11:05
Slackware: Current
Kernel: 2.6.24.5-smp
Località: Italia
Contatta:

Re: log monitoring + esecuzione script

Messaggio da dr4kk4r »

puoi usare monit :D

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: log monitoring + esecuzione script

Messaggio da Mario Vanoni »

spina ha scritto:Bhé, senza scomodare dei programmi, una soluzione potrebbe essere uno script eseguibile (ad esempio casa.sh):

Codice: Seleziona tutto

#!/bin/sh
while [ 1 -eq 1 ]; do
  if grep -m 1 xxx >/dev/null; then
    script_da_eseguire
  fi
done
e poi mettere in pipe:

Codice: Seleziona tutto

tail -f log_file | casa.sh
Un altra soluzione è quella di usare awk con la funzione system()

Codice: Seleziona tutto

tail -f log_file | awk '/xxx/{ system("path_dello_script_da_eseguire") }'
La differenza tra i due è che mentre il primo, la prima volta che lo avvii, esegue lo script solo una volta indipendentemente dal numero di xxx che già ci sono, il secondo esegue lo script tante volte per quante volte trova xxx. Spero di essermi spiegato bene :)

Spina
Scusa Spina,
perche' non usare tail -f -n 1 filename?

@Slack_Eater
monit non e` una utility X?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: log monitoring + esecuzione script

Messaggio da targzeta »

Mario Vanoni ha scritto:Scusa Spina,
perche' non usare tail -f -n 1 filename?
Questi sono dettagli, a me interessava far vedere l'idea in se.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
Slack_Eater
Linux 1.x
Linux 1.x
Messaggi: 163
Iscritto il: gio 14 feb 2008, 21:29
Nome Cognome: Giuseppe Scalzi
Slackware: 13.37
Kernel: 2.6.38.2-smp
Desktop: KDE 4.7.0
Località: Svizzera
Contatta:

Re: log monitoring + esecuzione script

Messaggio da Slack_Eater »

Ciao a tutti grazie per le risposte.

Allora monit non è un utility X, ha solo un piccolo web server per connettersi da remoto e la configurazione viene fatta tramite /etc/monitrc, in ogni caso è la prima cosa ha cui ho pensato per fare questo tipo di lavoro.

Però dato che la situazione è un pò più oscura (nel senso che ci sono dei dettagli che non mi permettono di usare monit e ci metterei troppo a spiegarvi i motivi) potrebbe andare bene l'opzione che suggerisce spina (la prima variante) in concomitanza con quello che dice Mario (-n 1).
Il grep di OpenBSD ha delle differenze, e una di queste è che non ha l'opzione -m (dovrei verificare se non è espressa con un'altra lettera; anche -wo non funziona come su linux), però non dovrebbe essere grave siccome dopo si andrà a fare il grep solo su una linea.

Domani provo e vi faccio sapere! 8) 8) :thumbright:

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: log monitoring + esecuzione script

Messaggio da targzeta »

Senza '-m 1' lo script non funziona, quell'opzione serve per far terminare grep al primo riscontro. Se grep non esce il tuo script non verrà mai eseguito, ti conviene usare awk.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Re: log monitoring + esecuzione script

Messaggio da Paoletta »

spina ha scritto:Senza '-m 1' lo script non funziona, quell'opzione serve per far terminare grep al primo riscontro. Se grep non esce il tuo script non verrà mai eseguito, ti conviene usare awk.

Spina
oppure puoi usare lo script con l'opzione -o di grep, in modo che ogni volta grep esce lo stesso

Avatar utente
Slack_Eater
Linux 1.x
Linux 1.x
Messaggi: 163
Iscritto il: gio 14 feb 2008, 21:29
Nome Cognome: Giuseppe Scalzi
Slackware: 13.37
Kernel: 2.6.38.2-smp
Desktop: KDE 4.7.0
Località: Svizzera
Contatta:

Re: log monitoring + esecuzione script

Messaggio da Slack_Eater »

Ciao,

ho provato ad utilizzare lo script di spina e funziona.
Nel frattempo ho trovato questi software che svolgono proprio le funzioni che cercavo, se vi interessano dategli un occhiata:

-swatch, http://server.html.it/articoli/leggi/22 ... controllo/, http://swatch.sourceforge.net/
-logsurfer, http://www.crypt.gen.nz/logsurfer/
-logwatch, http://www.logwatch.org/

Saluti 8) 8) 8) 8) 8)

Rispondi