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-ID: 184723

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

Ausgedruckt am: 23.11.2024 um 17:11 Uhr

catachan
catachan 09.05.2012 um 16:18:04 Uhr
Goto Top
Dazu habe ich folgenden Code versucht, der aber nicht richtig funktioniert:

Was genau geht denn nicht ?
thomas345
thomas345 09.05.2012 um 16:23:01 Uhr
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
catachan
catachan 09.05.2012 um 17:12:18 Uhr
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
thomas345
thomas345 10.05.2012 um 12:48:55 Uhr
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