PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [shell script] logfile ausgeben und bei Schlüsselwort abrechen



Avic
25.08.11, 19:08
Hallo,

vielleicht ist die Frage bei mrunix.de besser aufgehoben, aber ich habe dort keinen Acoocunt und brauche ihn auch nicht.

Ich habe ein Problem mit einem Shell-Script. Am Ende des Scripts wird mit tail -f ein Logfile geöffnet und angezeigt. Nun will ich das dieses Script und das tail -f bei einem bestimmten Schlüsselwort mit einem exitcode beendet wird. Schlüsselwort/String in diesem Fall "Server startup".

Meine Versuche mit tail, grep, tee, sed usw. schlugen bisher fehl :(

Vielleicht hat ja hier jemand eine Idee wie man das mit der bash verwirklichen kann?

Viele Grüße,
Avic

marce
25.08.11, 19:19
ohne es getestet zu haben - in sowas-wie-Pseudocode

tail -f logfile | while read line
do
echo $line
if $line eq "Server startup" ; break
done

könnte funktionieren, aber wie gesagt, nicht getestet ob das break (oder im schlimmsten Fall exit) das tail mit "beendet"... - im gruseligsten Fall killall tail :-)

buzz768
25.08.11, 21:46
Ich habe zufälllig kürzlich in der Manpage von inotifywait einen ähnlichen Anwendungsfall gesehen (Example 2), habe das Beispiel mal etwas angepasst, so dass Zeilen, die nicht "Server startup" enthalten, wie gewünscht angezeigt werden.


#!/bin/sh
while inotifywait -q -e modify /var/log/messages.log >/dev/null; do
tail -n1 /var/log/messages.log | grep -v "Server startup" || exit
done

Mit "logger Server startup" lässt sich der fatale Logeintrag simulieren, das Script beendet sich dann. Inotifywait gehört zu den inotify-tools.

Avic
26.08.11, 08:34
Ich danke euch! Das sind die Gedankenanstösse die ich gebraucht habe :)

Die letztliche Umsetzung werde ich euch hier dann zeigen.

Grüße Avic