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_toclose: Eine Kombination von write_close und nowrite_closeexcluded=<Verzeichnis> [,<Verzeichnis>, …]recursive=true|falseautoadd=true|falsecommand=<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