View previous topic :: View next topic |
Author |
Message |
slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Mon Jul 28, 2008 1:54 pm Post subject: Logfile (mit bash) überwachen |
|
|
Ein laufender Service schreibt fortlaufend in eine Logdatei.
Code: | # service > logfile & |
Wie kann ich (mit einem Bashscript) das logfile dauerhaft überwachen und beim Auftreten bestimmter Zeichenketten eine Aktion auslösen (idealerweise mit der Zeile als Parameter/Pipe an das Script)
Ich dachte zuerst an eine Lösung mit grep, aber das wäre sicherlich keine Idee bei einem stetig wachsendem Logfile. Ob eine Variante mit tail sinnvoll ist bin ich mir nicht sicher, weil in dem Moment wo das tail das Bashscript anschubst, könnte eine Zeile verloren gehen oder habe ich da einen Denkfehler?
Wie löst man sowas? |
|
Back to top |
|
|
think4urs11 Bodhisattva
Joined: 25 Jun 2003 Posts: 6659 Location: above the cloud
|
Posted: Mon Jul 28, 2008 6:28 pm Post subject: |
|
|
Ich würde das entweder mit tail -f logfile | grep foo && mach.was & oder via Edellösung mittels net-analyzer/sec machen.
Je nachdem was du genau brauchst ist sec wesentlich flexibler. _________________ Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself |
|
Back to top |
|
|
slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Tue Jul 29, 2008 6:43 am Post subject: |
|
|
sec werde ich mir mal anschauen, denn das von dir vorgeschlagene ist genau das was ich meinte. Wenn grep den Treffer findet beendet es die Anweisung durch den Aufruf von mach.was. Die darauffolgende Zeile vom Log wird schon nicht mehr überwacht. Das ist eine Schleife zu packen wäre bei genauer Überlegung auch sinnfrei. |
|
Back to top |
|
|
Knieper l33t
Joined: 10 Nov 2005 Posts: 846
|
Posted: Tue Jul 29, 2008 6:51 am Post subject: |
|
|
Und den Logdienst willst Du nicht benutzen? syslog-ng macht das auch. _________________ Je dümmer desto Gnome/KDE. |
|
Back to top |
|
|
Anarcho Advocate
Joined: 06 Jun 2004 Posts: 2970 Location: Germany
|
Posted: Tue Jul 29, 2008 9:12 am Post subject: |
|
|
Oder folgendes kleines Perl-Script: (nach emerge File-Tail)
Code: | #!/usr/bin/perl -w
use strict;
use File::Tail;
my $name = "/var/log/messages";
my $file=File::Tail->new(name=>$name, maxinterval=>5, interval=>3, adjustafter=>15);
while (defined(my $line=$file->read)) {
if ($line =~ /sudo/) {
system('echo "Damn sudo again..."');
}
} |
_________________ ...it's only Rock'n'Roll, but I like it! |
|
Back to top |
|
|
|