thomas345
Goto Top

Logfile live durchsuchen lassen und gefundene Zeilen als E-Mail senden - tail -f I grep I mail

Hallo,

Auf meinem Debian Server wird ein Log-File geschrieben, welches ich überwachen will, um auftretende Fehler sofort zu bemerken. Dafür habe ich folgenden Befehl:

tail -f /irgendeinort/logfile.log | grep -E "((WARNING)|(INFO))"

Dieser funktioniert auch wunderbar wenn ich Ihn in der Konsole "live" ausführe. Nun möchte ich - sobald eine eine Zeile mit dem Wort "WARNING" oder "INFO" darin vorkommt, eine E-Mail mit der Zeile versenden. Dazu habe ich folgenden Code in einem Script versucht, der aber nicht richtig funktioniert:

#!/bin/sh
tail -f /irgendeinort/logfile.log | grep -E "((WARNING)|(INFO))" | while read line
do
echo "$line" | mail -s irgendein_subject "meine@email.de"
done

Was muss ich ändern, damit die gefundenen Zeilen sofort nach dem Auffinden als E-Mail versendet werden?

Danke für Hinweise

Thomas

Content-Key: 184723

Url: https://administrator.de/contentid/184723

Printed on: April 16, 2024 at 22:04 o'clock

Member: catachan
catachan May 09, 2012 at 14:18:04 (UTC)
Goto Top
Dazu habe ich folgenden Code versucht, der aber nicht richtig funktioniert:

Was genau geht denn nicht ?
Member: thomas345
thomas345 May 09, 2012 at 14:23:01 (UTC)
Goto Top
Ich bekomme keine E-Mails zugestellt, obwohl in dieser Zeit zutreffende Meldungen/Zeilen in das Logfile geflossen sind.

Der Vollständigkeit halber:

Die erste Zeile im Script hatte ich nicht mit angegeben und lautet:

#!/bin/sh
Member: catachan
catachan May 09, 2012 at 15:12:18 (UTC)
Goto Top
Was schreibt das Syslog ? Wurde ein Mail verschickt ? Ist das Mail Programm installiert und eine MTA auf dem Server verfügbar ?
Sonst mach mal in der Schleife nur ein echo oder ne Umleitung in ein File
Member: thomas345
thomas345 May 10, 2012 at 10:48:55 (UTC)
Goto Top
Das Mailprogramm ist installiert und funktioniert auch. In welcher log-Datei sollte darüber etwas stehen?

Mit dem folgenden Befehl habe ich die Suchergebnisse erfolgreich in eine Datei umgeleitet:

tail -f /irgendeinort/server.log | grep -E "((WARNING)|(INFO))" > /irgendwo/test.txt

Danke

Thomas