Wie sehe ich Verzeichnisänderungen in Python?

Wie sehe ich Verzeichnisänderungen in Python?
In einigen Fällen, insbesondere an kritischen und eingeschränkten Stellen des Dateisystems, kann es hilfreich sein zu wissen, wann sich die Dinge ändern und was sich geändert hat. Mit Linux -Inotify -Tools und Python können wir die im System stattgefundenen Änderungen anzeigen und protokollieren.

In diesem Tutorial wird ein einfaches Skript implementiert, das Python- und Linux -API verwendet, um Änderungen in einem bestimmten Verzeichnis zu überwachen und die Konsolenänderungen zu protokollieren.

Bevor wir zum Skript kommen, lassen Sie uns kurz erläutern, wie inotifiziert funktioniert.

Was ist inotifiziert? Wie funktioniert es?

Inotify ist ein Kernel -Subsystem, das den Mechanismus zur Überwachung von Ereignissen im Dateisystem bereitstellt und an verschiedene Anwendungen meldet, die sie erfordern. Inotify ist unglaublich leistungsfähig, weil es in den unteren Ebenen des Kernels funktioniert und anpassbar ist, um die Funktionalität zu erweitern. Inotify kann Änderungen in Verzeichnissen und einzelnen Dateien überwachen.

Obwohl inotify mächtig ist, hat es einige Einschränkungen. Diese Einschränkungen umfassen:

  • Inotify unterstützt kein rekursives Verzeichnisbeobachten
  • Es ist nur im Linux -Kernel erhältlich
  • Die Umbenennung von Ereignissen mithilfe von Inotify wird nicht direkt behandelt.

Inotify ist jedoch immer noch eine viel bessere Wahl als Dnotify, sein Vorgänger. Inotify ist in Sicherheitsanwendungen wie Antiviren sehr anwendbar.

Jetzt, da wir die inotifizierte grundlegende Theorie aus dem Weg lassen, lassen Sie uns in das Erstellen des Skripts eintauchen, das uns hilft, Verzeichnisänderungen zu überwachen.

Installieren Sie Python und Watchdog

Lassen Sie uns vor dem Tauchen in den Code einige Anforderungen einrichten, z. B. die Installation von Python und das Watchdog -Paket.

Um Python3 auf Debian zu installieren, verwenden Sie den APT -Befehl als:

sudo apt-Get-Update
sudo apt-get installieren Sie Python3.7 Python3 -Pip -y

Verwenden Sie zum Installieren des Watchdog -Pakets den Befehl PIP3, wie unten gezeigt:

https: // pypi.org/project/watchdog/
sudo pip3 Installieren Sie Watchdog

Schreiben des Skripts

Das Skript, das wir in diesem Tutorial erstellen werden, ist sehr einfach. Betrachten Sie den unten angegebenen Quellcode:

Importsystem
Protokollierung importieren
Importzeit
vom Wachhund.Ereignisse importieren loggingEventHandler
vom Wachhund.Beobachter importieren Beobachter
Def monitor ():
# Basic Config hinzufügen
Protokollierung.BasicConfig (Level = Protokollierung.Info, format = " %(asctime) s - %(Nachricht) S",
DATEFMT = "%y-%M-%D%H:%M:%s")
# Erhalten Sie ein Verzeichnis als Argument
Pfad = sys.argv [1] wenn len (sys.argv)> 1 sonst '.''
e_handler = loggingEventHandler ()
Watch = Observer ()
betrachten.Zeitplan (e_handler, Pfad, rekursiv = true)
betrachten.Start()
versuchen:
während wahr:
Zeit.Schlaf (2)
Außer Tastaturinterruhrter:
betrachten.stoppen()
betrachten.verbinden()
Monitor()

Wir beginnen mit dem Importieren der erforderlichen Module, einschließlich Watchdog. Als nächstes erstellen wir eine einfache Monitorfunktion und setzen die Konfiguration, z. B. das Ausgangsformat und das Datum. Als nächstes setzen wir die Argumente des Verzeichnispfads.

Anschließend erstellen wir ein Observer -Objekt und setzen es so, dass die Änderungen am angegebenen Verzeichnis rekursiv überwacht werden, sofern ein Tastatur -Interrupt nicht auftritt (Strg + C)

Schließlich nennen wir die Funktion und führen das Skript aus. Sie erhalten eine Ausgabe, wie unten gezeigt:

Abschluss

Mit diesem Tutorial haben wir ein einfaches Skript erstellt, das die Änderungen in einem Verzeichnis überwacht, und protokolliert sie ständig an der Konsole.