PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bewegungsmelder: Per Script überprüfen, ob Log-Datei sich über längere Zeit ändert



jazzesnee
23.01.15, 18:37
Ich stehe gerade ein wenig auf dem Schlauch: Ich habe einen Raspberry mit zwei Bewegungsmeldern ausgestattet, deren Status im Hintergrund von einem Shell-Script alle drei Sekunden überprüft wird. Meldet einer der beiden Sensoren Bewegung, schreibt das Script Datum und Uhrzeit der Bewegung in die Log-Datei „/var/log/pir_sensor”. Die Log-Datei wächst also nur an, wenn Bewegung vorhanden ist, bei keiner Bewegung bleibt sie gleich groß.

Nun würde ich gerne ein Script schreiben, das im Hintergrund überprüft, ob sich die Datei über längere Zeit ändert. Wenn sich die Datei über 10 Minuten regelmäßig ändert, soll eine Aktion ausgelöst werden (E-Mail verschicken o.ä.). Oder anders ausgedrückt: Stellen die Sensoren über 10 Minuten lang Aktivität fest, soll etwas passieren. Vorher allerdings nicht.

Jetzt frage ich mich, wie ich das am elegantesten löse. Hat jemand Vorschläge? :)

marce
23.01.15, 19:32
Ist "Änderung, 9 Min. Pause, Änderung" auch etwas, was Du als mitteilenswert ansehen würdest oder soll die 10 Minuten durchgehend (also alle 3 sec.) ein Logeintrag vorkommen müssen?

Thorashh
23.01.15, 19:37
Moin

So aus dem Bauch heraus, würde ich dafür fail2ban einsetzen.

Thorashh

nopes
23.01.15, 19:48
Anbei ein einfacher Anfang:
#!/bin/bash
log="/foo/bar/log"
oldmd5=`md5sum ${log}`
cnt=0
cmp=200 # (10 * 60) / 3
while [ 1 ]; do
sleep 3
actmd5=`md5sum ${log}`
if [ "$actmd5" != "$oldmd5" ]; then
echo "change detected..."
oldmd5=$actmd5
cnt=$((cnt + 3))
else
echo "no change detected..."
cnt=0
fi
if [ "$cnt" -ge "$cmp" ]; then
echo "send mail..."
cnt=0
fi
done;

drcux
23.01.15, 19:49
fail2ban ist ja mit Kanonen auf Spatzen geschossen... warten wir auf die Antwort auf Marce Frage, dann ist das mit ein paar Zeilen erledigt...

jazzesnee
25.01.15, 10:48
Vielleicht nicht durchgängig alle drei Sekunden. Aber wenn etwa im 3-Minuten-Abstand überprüft würde, ob zwischenzeitlich eine Bewegung da war und das drei Mal in Folge passiert, sollte das das Ereignis triggern.