¿Cómo veo cambios en el directorio en Python??

¿Cómo veo cambios en el directorio en Python??
En algunos casos, especialmente en ubicaciones críticas y restringidas del sistema de archivos, puede ser útil saber cuándo cambian las cosas y qué ha cambiado. Utilizando las herramientas de Linux inotify y python, podemos ver e registrar los cambios que ocurren dentro del sistema.

Este tutorial repasará cómo implementar un script simple que use la API de Python y Linux inotify para monitorear los cambios en un directorio específico y registrar los cambios de la consola.

Antes de llegar al guión, discutamos brevemente cómo funciona Inotify.

Que es inotify? Como funciona?

Inotify es un subsistema de kernel que proporciona el mecanismo para monitorear los eventos dentro del sistema de archivos e informarlos a varias aplicaciones que les exigen. Inotify es increíblemente poderoso porque funciona en los niveles más bajos del núcleo y es personalizable para expandir la funcionalidad. Inotify puede monitorear cambios en directorios y archivos individuales.

Aunque inotify es poderoso, tiene algunas limitaciones. Estas limitaciones incluyen:

  • Inotify no admite la observación de directorio recursivo
  • Solo está disponible en el kernel de Linux
  • El cambio de nombre de eventos que usan inotify no se aborda directamente.

Sin embargo, inotify sigue siendo una opción mucho mejor que dnotify, su predecesor. Inotify es altamente aplicable en aplicaciones de seguridad como antivirus.

Ahora que tenemos la teoría básica inotify fuera del camino, nos sumergamos para construir el guión que nos ayudará a monitorear los cambios de directorio.

Instalación de Python y Watchdog

Antes de sumergirnos en el código, configuremos algunos requisitos, como instalar Python y el paquete Watchdog.

Para instalar Python3 en Debian, use el comando APT como:

actualización de sudo apt-get
sudo apt-get install python3.7 python3 -pip -y

Para instalar el paquete Watchdog, use el comando PIP3 como se muestra a continuación:

https: // pypi.org/Project/Watchdog/
sudo PIP3 Instalar Watchdog

Escribir el guión

El script que crearemos en este tutorial es muy simple. Considere el código fuente que se muestra a continuación:

Sys de importación
Registro de importación
tiempo de importación
De Watchdog.eventos importar loggingEventhandler
De Watchdog.Observador de importación Observador
Def Monitor ()::
# Agregar configuración básica
Inicio sesión.BasicConfig (nivel = registro.Info, format = " %(ascTime) s - %(mensaje) s",
datefmt = "%y-%m-%d%h:%m:%s")
# Obtener directorio como argumento
ruta = sys.Argv [1] si Len (SYS.argv)> 1 else '.'
e_handler = loggingEventhandler ()
watch = Observer ()
mirar.Anexo (e_handler, ruta, recursivo = verdadero)
mirar.comenzar()
intentar:
Mientras que es cierto:
tiempo.dormir (2)
Excepto que el teclado segrine:
mirar.detener()
mirar.unirse()
monitor()

Comenzamos importando los módulos requeridos, incluido Watchdog. A continuación, creamos una función de monitor simple y establecemos la configuración, como el formato de salida y la fecha. A continuación, establecemos los argumentos de la ruta del directorio.

Luego nos movemos para crear un objeto Observador y lo establecemos para monitorear recursivamente los cambios en el directorio especificado a menos que se encuentre una interrupción del teclado (Ctrl + C)

Finalmente, llamamos a la función y ejecutamos el script. Obtendrá una salida como se muestra a continuación:

Conclusión

Usando este tutorial, hemos creado un script simple que monitorea los cambios en un directorio y los registra constantemente en la consola.