Python: Script zur Überwachung von Dateisystemereignissen mit pyinotify
Inhalt
Beschreibung
Mit dem Python-Modul Pyinotify können alle Änderungen auf dem Dateisystem verfolgt werden. Pyinotify bezieht die Informationen direkt vom Subsystem „inotify“ (inode notify) des Kernels, um bestmögliche Performance zu gewährleisten.
Das Script „observeDirs“ überwacht rekursiv alle Verzeichnisse, die in der Liste „dirs_recursive_to_observe“ in „oD_configuration.py“ vorkommen.
dirs_recursive_to_observe = [ '/etc', '/root', '/usr' ] dirs_recursive_to_ignore = [ '/usr/portage', ] regexs_to_ignore = [ '^/root/.viminfo*', ]
Mit pyinotify werden in den konfigurierten Verzeichnissen folgende Veränderungen an Dateien oder Unterverzeichnissen behandelt: Neu-Erstellung, Bearbeitungen von Dateien, Metadatenänderungen (z.B. Berechtigungen), Löschungen und Verschiebungen.
Über jede diese Veränderungen wird man per eMail informiert.
Hier ein kleines Beispiel von eMails, die durch Aktualisierung des Systems versendet wurden:
Im Dictionary „maildata“ (ebenfalls in „oD_configuration.py“) können Einstellungen getroffen werden:
maildata = { 'sendmail': True, 'fetch_time': 60, 'to': 'to@mail', 'from': 'from@mail', 'subject': 'observeDirs :: ALERT', 'cmd': '/usr/sbin/sendmail -t', }
Der Wert des Keys „fetch_time“ bestimmt die Zeit in Sekunden, die nach einer ersten Änderung gewartet wird und dabei neue Änderungen gesammelt werden.
Das bedeutet, dass nach der ersten Änderung sofort eine eMail verschickt wird, damit man informiert wird, dass sich gerade etwas getan hat.
Dann werden in diesem Fall 60 Sekunden gewartet, bis eine zweite eMail versendet wird, falls weitere Änderungen auf dem Dateisystem geloggt wurden. Ist das der Fall, werden alle Änderungen in dieser zweiten eMail verschickt.
Zudem werden alle Vorkommnisse sofort nach „/var/log/observeDirs.log“ gespeichert.
Eine eMail mit einer neuen Meldung könnte dann so aussehen:
Die zweite bzw. eventuell nachfolgenden eMails sehen so aus:
Quellcode
Den Quellcode zu observeDirs habe ich hier abgelegt:
https://gitorious.org/observedirs.
Mit git kann der Quellcode ohne Schlüsselpaar so geladen werden:
git clone https://git.gitorious.org/observedirs/observedirs.git
Projektdaten
Daten aus https://gitorious.org/observedirs.xml
Eingestellt am: 25.05.2022 um 01:53:12
Lizenz:
Owner:
Repositories: