Comment voir les changements de répertoire dans Python?

Comment voir les changements de répertoire dans Python?
Dans certains cas, en particulier dans les emplacements critiques et restreints du système de fichiers, il peut être utile de savoir quand les choses changent et ce qui a changé. En utilisant des outils Linux Inotify et Python, nous pouvons afficher et enregistrer les modifications qui se produisent dans le système.

Ce tutoriel expliquera comment implémenter un script simple qui utilise l'API Python et Linux Inotify pour surveiller les modifications dans un répertoire spécifique et enregistrer les modifications de la console.

Avant d'arriver au script, discutons brièvement du fonctionnement de l'inotifier.

Qu'est-ce que l'inotifier? Comment ça marche?

Inotify est un sous-système de noyau qui fournit le mécanisme pour surveiller les événements du système de fichiers et les signaler à diverses applications qui les nécessitent. L'inotify est incroyablement puissant car il fonctionne dans les niveaux inférieurs du noyau et est personnalisable pour étendre les fonctionnalités. Inotify peut surveiller les modifications des répertoires et des fichiers individuels.

Bien que l'inotify soit puissant, il a certaines limites. Ces limitations incluent:

  • Inotify ne prend pas en charge l'observation du répertoire récursif
  • Il n'est disponible que dans le noyau Linux
  • Le changement de nom des événements à l'aide d'inotify n'est pas traité directement.

Cependant, l'inotify est toujours un bien meilleur choix que dnotify, son prédécesseur. Inotify est très applicable dans les applications de sécurité comme les antivirus.

Maintenant que nous avons l'inotifier de la théorie de base à l'écart, plongeons-nous dans la construction du script qui nous aidera à surveiller les changements de répertoire.

Installation de python et de chien de garde

Avant de plonger dans le code, créons quelques exigences, telles que l'installation de Python et du package de surveillance.

Pour installer Python3 sur Debian, utilisez la commande APT comme:

Mise à jour Sudo apt-get
sudo apt-get install python3.7 Python3-Pip -y

Pour installer le package de surveillance, utilisez la commande PIP3 comme indiqué ci-dessous:

https: // pypi.org / project / watchdog /
Sudo Pip3 Installer Watchdog

Écrire le script

Le script que nous créerons dans ce tutoriel est très simple. Considérez le code source ci-dessous:

importer sys
journalisation d'importation
heure d'importation
de Watchdog.Événements Import LoggingEventHandler
de Watchdog.Observateurs Import Observer
Def Monitor ():
# Ajouter une configuration de base
enregistrement.BasicConfig (niveau = journalisation.Info, format = "% (asctime) s -% (message) s",
datefmt = "% y-% m-% d% h:% m:% s")
# Obtenez le répertoire comme argument
chemin = sys.argv [1] si Len (sys.argv)> 1 else '.'
e_handler = loggingEventHandler ()
watch = Observer ()
montre.calendrier (e_handler, chemin, récursif = true)
montre.commencer()
essayer:
Bien que vrai:
temps.sommeil (2)
sauf le clavier Interrupteur:
montre.arrêt()
montre.rejoindre()
moniteur()

Nous commençons par importer les modules requis, y compris le chien de garde. Ensuite, nous créons une fonction de moniteur simple et définissons la configuration, telle que le format de sortie et la date. Ensuite, nous définissons les arguments du chemin du répertoire.

Nous nous déplaçons ensuite pour créer un objet d'observateur et le définissons pour surveiller récursivement les modifications du répertoire spécifié à moins qu'une interruption de clavier ne soit rencontrée (Ctrl + C)

Enfin, nous appelons la fonction et exécutons le script. Vous obtiendrez une sortie comme indiqué ci-dessous:

Conclusion

En utilisant ce tutoriel, nous avons créé un script simple qui surveille les changements dans un répertoire et les enregistre constamment à la console.