ADMIN 03/14 stellt Erste-Hilfe-Tipps zu Windows-Rettung, Backup und Recovery bei Datenbanken vor und verrät wie man Linux-Systeme vollständig sichert und ... (mehr)

Stiller Alarm

Incron lässt sich auch als Hinweisgeber verwenden, um Zugriffe auf die Dateien eines bestimmten Verzeichnisses zu protokollieren. Ein Skript vermerkt im folgenden Beispiel jeden Zugriff auf ein bestimmtes Verzeichnis unter Angabe der Zugriffsart mithilfe des »$%« -Operators:

/home/$USER/Dokumente IN_ACCESS,IN_CLOSE_WRITE access_control.sh $%

Hierbei dient der Name des Ereignisses ( »$%« ) als Argument für das Beispiel-Skript »access_control.sh« .

Incrontab dynamisch

Ein weiteres Praxisbeispiel verwendet Incron, um Benutzer über neue Dateien in einem Arbeitsverzeichnis zu benachrichtigen. Es enthält beispielsweise die Warteschlange des Mitarbeiters, in der er neue Dokumente vorfindet, die er zu bearbeiten hat. Incron befreit ihn von der lästigen Pflicht, den Ordner regelmäßig auf Neuigkeiten zu überprüfen.

Eine Schwierigkeit besteht in diesem Szenario: Die Dokumente sollen in eine Ordnerstruktur unterhalb des Arbeitsverzeichnisses eingegliedert werden, etwa ein Unterordner für jedes Jahr und darunter ein weiterer für jeden Monat. Wie erwähnt bietet Incron allerdings keine Möglichkeit, Ordner rekursiv zu überwachen. Um nicht für jedes Verzeichnis einen einzelnen Eintrag in der Incrontab erstellen zu müssen, erledigt dies das Skript »makeIncrontab.sh« aus Listing 1 .

Listing 1

makeIncrontab.sh erzeugt eine Incrontab

 

Der Trick besteht darin, die Incron-Tabelle automatisch zu bearbeiten, und nicht mit dem interaktiven Editor ( »incrontab -e« ) . Die Incrontab-Dateien liegen unter »/var/spool/incron/« . Für jeden Benutzer hält das Programm eine eigene Datei vor, benannt nach dessen Usernamen. Als Ausgangspunkt für das beschriebene Beispiel erstellt zunächst Root für jeden Mitarbeiter manuell einen Eintrag in seiner Incrontab mit »sudo incrontab -e« :

/home/joe IN_CREATE /usr/local/bin/makeIncrontab.sh $@
/home/jane IN_CREATE /usr/local/bin/makeIncrontab.sh $@
/home/jed IN_CREATE /usr/local/bin/makeIncrontab.sh $@
...

Das erfordert zwar weiterhin etwas Handarbeit, aber nur beim Hinzufügen und Entfernen einzelner Mitarbeiter. Incrontab überwacht nun das Home-Verzeichnis jedes Mitarbeiters und ruft »makeIncrontab.sh« ( Listing 2 ) auf, sobald darin ein neues Unterverzeichnis angelegt wird.

Das Skript »makeIncrontab.sh« nimmt einen Benutzernamen als Argument entgegen – ausgelesen mit »$@« – und löscht bereits existierende Incrontab-Dateien. Das bringt den Vorteil mit sich, dass zuvor angelegte Regeln für eventuell nicht mehr bestehende Verzeichnisse automatisch verschwinden. Danach iteriert »makeIncrontab.sh« über alle Unterverzeichnisse im Home-Verzeichnis des angegebenen Benutzers. Für jedes davon erzeugt es einen neuen Incrontab-Eintrag. Sobald einem dieser Verzeichnisse eine neue Datei hinzugefügt wird, ruft es das Skript »send_mail.sh« auf.

Die E-Mail-Adresse des Benutzers entnimmt das Skript der Datei ».emailaddress« im Home-Verzeichnis, die zu diesem Zweck natürlich existieren muss. Daneben verwendet »makeIncrontab.sh« das Skript »send_mail.sh« , um in diesem Beispiel eine E-Mail an den Benutzer zu senden. Listing 2 zeigt eine Incrontab-Datei als mögliches Ergebnis des Vorgangs.

Listing 2

Automatisch generierte Incrontab-Datei für Benutzer joe

/home/joe/lm75 IN_CREATE send_mail.sh address@admin.com joe@editor.com $# $@
/home/joe/lm76 IN_CREATE send_mail.sh address@admin.com joe@editor.com $# $@
/home/joe/shell02 IN_CREATE send_mail.sh address@admin.com joe@editor.com $# $@
/home/joe/uu04 IN_CREATE send_mail.sh address@admin.com joe@editor.com $# $@

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

ADMIN-Tipp: Dateien überwachen mit Incron

Mit der Inotify-Schnittstelle des Linux-Kernel lassen sich Dateien und Verzeichnisse auf Veränderungen hin überwachen. Passende Tools führen Befehle und Skripts aus, wenn sich etwas ändert. 

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023