Watchdog et Paramiko¶
🐶 Watchdog¶
Watchdog est une bibliothèque Python qui permet de surveiller les changements dans un répertoire ou un fichier en temps réel.
À quoi ça sert ?¶
Détecter quand un fichier est créé, modifié, supprimé ou déplacé.
Très utile pour :
automatiser des tâches (ex : traitement automatique de fichiers déposés dans un dossier),
créer des systèmes de surveillance de fichiers,
déclencher des scripts dès qu’un changement est détecté.
🔐 Paramiko¶
Paramiko est une bibliothèque Python qui permet de se connecter à un serveur distant via SSH.
À quoi ça sert ?¶
Exécuter des commandes à distance sur un serveur Linux.
Transférer des fichiers entre ta machine et un serveur (via SFTP).
Très utilisé pour :
automatiser des déploiements,
faire des sauvegardes distantes,
gérer des serveurs sans interface graphique.
Installation¶
pip install watchdog paramikoExercice¶
Solution to Exercise 1 #
import time
import paramiko
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import os
# Configuration
remote_file_path = "/home/tempo/requirements.txt"
local_directory = "./"
local_file_path = os.path.join(local_directory, "toto.txt")
hostname = "aperto-nota.fr"
port = 22
username = "tempo"
password = "usertempo"
# Téléchargement du fichier via SSH
def telecharger_fichier():
try:
transport = paramiko.Transport((hostname, port))
transport.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.get(remote_file_path, local_file_path)
sftp.close()
transport.close()
print("Fichier téléchargé avec succès.")
except Exception as e:
print(f"Erreur lors du téléchargement : {e}")
# Surveillance du fichier local
class SurveillanceHandler(FileSystemEventHandler):
def on_modified(self, event):
if event.src_path == local_file_path:
print(f"Le fichier {event.src_path} a été modifié.")
if __name__ == "__main__":
telecharger_fichier()
event_handler = SurveillanceHandler()
observer = Observer()
observer.schedule(event_handler, path=local_directory, recursive=False)
observer.start()
print("Surveillance du fichier en cours...")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()