PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : scriptablauf permanent ... (?)



12-03-2001, 10:34
moin moin,

ich würde gern ein tail -f auf eine datei ausführen und per grep nach einer zeichenkette suchen lassen. das läuft auch permanent, so lange der befehl nicht gestoppt wird.
jetzt möchte ich aber, daß ein anderes script ausgeführt wird, sobald diese zeichenkette gefunden wird ... allerdings nur noch minütlich, da ich dann den cronjob zu hilfe nehmen muß -> nix mehr mit permanent :-(

erst dachte ich, daß ganze mit ner if-anweisung zu erledigen, nur wird die ja nicht fortlaufend gemacht. also per while. allerdings war da die frage, mit exec das tail einleiten oder ohne ... allerdings kommt dann die scriptausführung ... alle fünf sekunden aufs neue, er soll es aber nur einmal tun :-(

falls jemand so halbwegs damit was anfangen konnte und mir auch noch input geben kann, wäre ich sehr dankbar ...

cu iae

12-03-2001, 16:14
hm, tut leider gar nix :-((

12-03-2001, 17:57
Was heist hier, tut leider gar nix?
Gibts irgendeine Fehlermeldung?
Fehlt expect?

Hatte es hier bei mir getestet und es lief.

Teste mal (xterm 1)
touch src
cat >> src

(xterm 2)
expect -c 'spawn bash -c "tail -f src | grep h" ; while "1" { expect { -re ".*" {puts expect_out(buffer)\n} } sleep 1 }'

Jetzt in (xterm 1) etwas Tippen
und du solltest in xterm2 jede Zeile die ein h enthaelt zu sehen kriegen.

Hier funktionierts.

13-03-2001, 00:53
Da kramen wir doch ein zu unrecht kaum mehr beachtetes Kommandozeilen-Tool raus: expect

Folgender Aufruf beobachtet Datei src und sucht nach Zeilen mit dem Muster pattern. Alle 60 Sekunden wird, falls das Muster gefunden wurde echo ausgefuehrt und die alle neuen Zeilen als erstes Argument uebergeben expect_out(buffer)\n.

(expect umgeht die tatsache das grep ziemlich viel puffered, sobald es in eine pipe schreibt indem es pty's benutzt. Das ist eigentlich der Hauptgrund fuer expect in diesem Beispiel, die while-Schleife und das sleep gingen ja auch in der shell)


expect -c 'spawn -noecho bash -c "tail -f src | grep pattern" ; while "1" { expect { -re ".*" {exec echo expect_out(buffer)\n} } sleep 60 }'

13-03-2001, 08:18
jupp ... ich hab wohl schneller gehandelt als ich denken konnte ;-)

ich habs mit exec versucht und wollte das ganze gleich kombinieren. angesicht des geänderten syntaxe hab ich wohl falsch gedacht und muß dat ganze anders angehen.
die manP sind ja sejr informatief, nur etwas wirr, wenn man weiß, welches infos man sucht ;-)
aber ich dank dir mal, eine schöne demonstration ... bei meinen wünschen werd ich wohl aber dich programmieren lernen müssen ... *pfeif*

cu/2 iae

Satilmis
16-02-2002, 18:31
Hallo !

Wenn ich das richtig verstanden habe, wollt ihr eine Datei "kontrollieren". Wieso macht ihr das nicht mit dem Programm "logsurf" ????

Tschau