Nachfolgend soll die Installation und Arbeitsweise des Überwachungsprogrammes watcher
beschrieben werden. Es damit möglich ein Verzeichnis (inklusive aller Unterverzeichnisse) zu überwachen und beim Eintreten einer Änderung bestimmte Aktionen auszulösen. Ein verwandtes Programm ist incron
(welches aber nur auf Veränderung von Dateien in einem Verzeichnis reagiert).
Das Programm watcher
ist ein Python-Skript und benötigt demnach bestimmte Python-Pakete als Abhängigkeit:
~# apt-get install python python-pyinotify
Es werden zwei Dateien benötigt, der Dienst (Python-Skript) watcher.py
(von https://github.com/splitbrain/Watcher/blob/master/watcher.py) und die Konfigurationsdatei watcher.ini
(von https://github.com/splitbrain/Watcher/blob/master/watcher.ini). Das Skript wird ins Verzeichnis /etc/init.d/
kopiert, damit es bei einem Rechnerstart automatisch mit startet. Die Konfigurationsdatei wird nach /etc/
kopiert.
Der Dienst muss für einen automatischen Start in die Runlevel eingetragen werden:
~# chmod +x /etc/init.d/watcher.py ~# update-rc.d watcher.py defaults ~# update-rc.d watcher.py enable 2 3 4 5
~# /etc/init.d/watcher.py start ~# /etc/init.d/watcher.py stop
~# /etc/init.d/watcher.py debug
Die Konfigurationsdatei /etc/watcher.ini
gliedert sich in zwei Bereiche. Der allgemeine Teil ([DEFAULT]
) gilt für alle Überwachungen. Jede Überwachung besitzt einen eigenen Abschnitt.
Der allgmeine Teil besitzt zwei Parameter:
logfile=<Ort der Logdatei>
pidfile=<Ort der PID-Datei>
Jede Überwachung (gekeinnzeichniet mit [<Name der Überwachung>]
) besteht aus mehreren Parametern:
watch=<Verzeichnisname>
events=<Event> [,<Event>, …]
access
: Dateizugriff (lesender)attribute_change
: Änderung des Dateiattributeswrite_close
: Geschlossener Schreibzugriffnowrite_close
Ungeöffneter Schreibzugriffcreate
: Datei wurde neu erstelltdelete
: Datei wurde gelöschtself_delete
: Datei hat sich selbst gelöschtmodify
: Datei wurde verändertself_move
: Datei hat sich selbst verschobenmove_from
: Datei wurde von innen nach außerhalb des überwachten Verzeichnisses verschobenmove_to
: Datei wurde von außerhalb des überwachten Verzeichnisses hinein verschobenopen
: Datei wurde geöffnetall
: Eine der vorher genannten Ereignissemove
: Eine Kombination aus move_from
und move_to
close
: Eine Kombination von write_close
und nowrite_close
excluded=<Verzeichnis> [,<Verzeichnis>, …]
recursive=true|false
autoadd=true|false
command=<Kommando>
$$
: Dollarzeichen$watched
: Überwachtes Verzeichnis$filename
: Datei, auf welches Ereignis zutraf
Die Logdatei, die geschrieben wird, sollte regelmäßig durch logrotate
bereinigt werden.
/etc/logrotate.d/watcher
“:/var/log/watcher.log { weekly rotate 12 compress delaycompress missingok notifempty create 644 root root }
Die Logrotation kann überprüft werden:
~# logrotate -f /etc/logrotate.d/watcher
Wurde der Dienst gestartet, kann dies wie folgt überprüft werden:
~# ps -ef | grep [w]atcher.py root 9793 1 0 10:57 ? 00:00:00 python /etc/init.d/watcher.py start
— Steffen Bornemann 08.11.2018