Anzeige:
Ergebnis 1 bis 6 von 6

Thema: scriptablauf permanent ... (?)

  1. #1
    Gast

    Post scriptablauf permanent ... (?)

    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


  2. #2
    Gast

    Post

    hm, tut leider gar nix :-((

  3. #3
    Gast

    Post

    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.

  4. #4
    Gast

    Post

    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)

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

  5. #5
    Gast

    Post

    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

  6. #6
    Satilmis
    Gast
    Hallo !

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

    Tschau

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •