Come vedo i cambiamenti della directory in Python?

Come vedo i cambiamenti della directory in Python?
In alcuni casi, specialmente in posizioni critiche e limitate del filesystem, può essere utile sapere quando le cose cambiano e cosa è cambiato. Usando gli strumenti di Inotify Linux e Python, possiamo visualizzare e registrare le modifiche che si verificano all'interno del sistema.

Questo tutorial esaminerà come implementare un semplice script che utilizza l'API Python e Linux inotify per monitorare le modifiche in una directory specifica e registrare le modifiche alla console.

Prima di arrivare alla sceneggiatura, discutiamo brevemente di come funziona inotify.

Cosa è inotifica? Come funziona?

Inotify è un sottosistema del kernel che fornisce il meccanismo per monitorare gli eventi all'interno del filesystem e segnalarli a varie applicazioni che li richiedono. Inotify è incredibilmente potente perché funziona ai livelli più bassi del kernel ed è personalizzabile per espandere la funzionalità. Inotify può monitorare le modifiche nelle directory e nei singoli file.

Sebbene inotify sia potente, ha alcune limitazioni. Queste limitazioni includono:

  • Inotify non supporta la directory ricorsiva
  • È disponibile solo nel kernel Linux
  • La ridenominazione degli eventi tramite inotify non viene affrontato direttamente.

Tuttavia, inotify è ancora una scelta molto migliore di Dnotify, il suo predecessore. Inotify è altamente applicabile in applicazioni di sicurezza come gli antivirus.

Ora che abbiamo la teoria di base inotificata fuori mano, ci immergiamo nella costruzione della sceneggiatura che ci aiuterà a monitorare le modifiche alla directory.

Installazione di Python e watchdog

Prima di immergerti nel codice, impostiamo alcuni requisiti, come l'installazione di Python e il pacchetto Watchdog.

Per installare Python3 su Debian, utilizzare il comando APT come:

Sudo Apt-get Aggiornamento
sudo apt-get installa python3.7 Python3 -pip -y

Per installare il pacchetto watchdog, utilizzare il comando PIP3 come mostrato di seguito:

https: // pypi.org/progetto/watchdog/
SUDO PIP3 Installa il cane da guardia

Scrivere la sceneggiatura

Lo script che creeremo in questo tutorial è molto semplice. Considera il codice sorgente mostrato di seguito:

Import sys
Registrazione di importazione
tempo di importazione
da watchdog.Eventi Importa LoggingEventHandler
da watchdog.Gli osservatori importano l'osservatore
DEF Monitor ():
# Aggiungi configurazione di base
registrazione.BasicConfig (level = registrazione.Info, format = " %(asctime) s - %(messaggio) s",
datefmt = "%y-%m-%d%h:%m:%s")
# Ottieni la directory come argomento
Path = sys.argv [1] se len (sys.argv)> 1 altro '.'
e_handler = loggingEventHandler ()
watch = Observer ()
orologio.Programma (e_handler, percorso, ricorsivo = true)
orologio.inizio()
Tentativo:
mentre è vero:
tempo.sonno (2)
Tranne la tastiera interrupt:
orologio.fermare()
orologio.giuntura()
tenere sotto controllo()

Iniziamo importando i moduli richiesti, incluso il cane da guardia. Successivamente, creiamo una semplice funzione di monitor e impostiamo la configurazione, come il formato di output e la data. Successivamente, abbiamo impostato gli argomenti del percorso della directory.

Quindi ci spostiamo per creare un oggetto Observer e impostarlo per monitorare ricorsivamente le modifiche alla directory specificata a meno che non si incontri un interrupt da tastiera (CTRL + C)

Infine, chiamiamo la funzione ed eseguiamo lo script. Otterrai un output come mostrato di seguito:

Conclusione

Usando questo tutorial, abbiamo creato un semplice script che monitora le modifiche in una directory e le registra costantemente alla console.