Portfolio de Tiberiu Rosca

Python

Avant même d’apprendre Python pendant mes études, je me suis lancé dans le développement d’un script (même si j’avais déjà développé autre chose 6 ans auparavant).

Un script Python ?

Facile à exécuter, à implémenter, donc ce n’était pas trop compliqué. De plus, la plupart des logiciels de sauvegarde sont payants ou ne prennent pas en charge l’envoi des sauvegardes vers Google Drive.

Comment fonctionne mon script ?

Ce script de sauvegarde a commencé à l’origine comme une sauvegarde pour MariaDB et GLPI dans le projet GLPI que j’ai réalisé.
Ainsi, dans cette explication et l’image, le processus sera basé sur cela.

Ce script est exécuté dans un conteneur Podman, auquel les identifiants IMAP et le serveur sont fournis via des variables d’environnement.
Cela permet de garder les informations de connexion plus sécurisées que si elles étaient écrites dans un fichier texte en clair (à ne pas faire).


Au moment prévu, le script Python s’exécute et commence par lancer des commandes shell Linux avec la bibliothèque subprocess, en vérifiant à chaque fois s’il y a une erreur :

  1. Envoyer une commande SSH au serveur MariaDB sous Podman > Dump de la base de données
  2. Utiliser Rsync pour copier le dump de la base de données.
  3. Utiliser Rsync pour copier les fichiers GLPI.
  4. La quatrième étape est une condition :
    • S’il n’y a pas eu d’erreur : compresser le tout dans une archive tar.gz et l’envoyer dans un endroit sûr.
    • S’il y a eu une erreur, le processus se complexifie et lance la procédure d’erreur.

Le processus d’erreur :

Si, lors d’une commande bash, une erreur survient, le script la collecte et l’ajoute à une variable « Error ».
Ensuite, le script vérifie si Error n’est pas nul. Si ce n’est pas nul, il exécute le processus d’erreur.

Dans ce projet, j’utilise des variables d’environnement. Nous devons donc utiliser une bibliothèque permettant de lire ces variables. Cependant, le problème est que les variables et processus Python ne voient pas directement les variables Linux.

Pour que cela fonctionne, il faut importer ces variables dans l’environnement Python, et pour cela, j’ai utilisé la bibliothèque dotenv.
En utilisant la commande dotenv.load_dotenv(), nous pouvons récupérer ces variables dans Python, puis les exploiter avec la bibliothèque os via var = os.environ.get('myvar').

Ensuite, après avoir récupéré les variables, le script les utilise pour rédiger un email avec la bibliothèque smtplib.
Dans le mail, il y a un petit texte descriptif, puis les erreurs.

Une fois l’email envoyé, le script enregistre également les erreurs dans un fichier log.