Log Datei auswerten, mit bash script oder Befehlsfolge

  • Log Datei auswerten, mit bash script oder Befehlsfolge? Schau mal ob du hier fündig wirst!

  • Spoiler anzeigen

    #!/bin/bash

    #

    # Name: ldr_status.sh

    # Sample code which listens for a file contents change

    # and depending on the new contents triggers an action

    #

    if ! type inotifywait &>/dev/null ; then

    echo "Missing inotifywait dependency. Install package inotify-tools (sudo apt-get install inotify-tools)"

    exit 42

    fi

    LOGFILE="/tmp/ldr.log"

    # setup change listener on file

    coproc INOTIFY {

    inotifywait -q -m -e close_write --format %e "$LOGFILE" &

    trap "kill $!" 1 2 3 6 15

    wait

    }

    # listen for event from coproc pipe and trigger action

    while read event; do

    value=$(<$LOGFILE)

    case $value in

    0) echo "Off received"

    /home/pi/rcPlugsServer/rcswitch-pi/send 10100 1 0

    ;;

    1) echo "On received"

    /home/pi/rcPlugsServer/rcswitch-pi/send 10100 1 1

    ;;

    *) echo "Unknown -$value- detected"

    ;;

    esac

    done <&${INOTIFY[0]}

    Hallo,

    habe nach einer Zwangspause durch eine Krankheit das folgende Script von framp nun getestet. Vielen Dank nochmals an framp.

    Ich hoffe auf Eure Unterstützung, weil das Programm „inodify“ nicht so recht will.

    Möchte mit dem Programm eine Log Datei ( /tmp/ldr.log ) auswerten. In dieser Datei steht nur ein Zeichen in einer Zeile, nämlich eine 0 oder eine 1.

    Die Log Datei exestiert im Verzeichnis und wird, je nach dem, neu überschrieben.

    inodify sollte nach einer eintretenden Änderung dieser Log Datei mit dem Script ( ldr_status.sh ) siehe Spoiler, reagieren.

    Macht es aber nicht. Ich rufe inotiy auf mit:

    pi@raspi_zero:/usr/local/bin/scripts/ldr$ inotifywait ldr_status.sh

    Setting up watches.

    Watches established.

    Wenn sich die Log Datei durch einen anderen Wert ändert, reagiert das Script nicht.

    Was mache ich falsch?

    D / NRW / DO

    Einmal editiert, zuletzt von lv256 (20. Januar 2018 um 13:20) aus folgendem Grund: Info Nachtrag

  • Ichrufe inotiy auf mit:

    pi@raspi_zero:/usr/local/bin/scripts/ldr$ inotifywait ldr_status.sh

    Setting up watches.

    Watches established.

    Wenn sich die Log Datei durch einen anderen Wert ändert, reagiert das Script nicht.

    Was mache ich falsch?

    Das Script ist vollständig. D.h. Du darfst es NICHT mit inotify aufrufen weil dann jegliche Änderungen von der Scriptdatei und nicht der Logdatei überwacht werden ;)

    Code
    pi@raspi_zero:/usr/local/bin/scripts/ldr$ ./ldr_status.sh

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!