Automatisation Bash et Python sur le serveur : guide pratique
L’automatisation est l’épine dorsale des processus modernes d’administration de serveurs. Que vous soyez un développeur cherchant à rationaliser des tâches ou un administrateur système voulant éliminer le travail répétitif, Bash et Python forment une combinaison puissante pour l’automatisation de serveurs. Dans cet article, nous explorons comment combiner ces outils avec des planificateurs comme cron pour une automatisation efficace et fiable.
Pourquoi Bash et Python pour l’automatisation de serveurs ?
Pour l’automatisation de serveurs, deux approches principales sont populaires :
- Scripts Bash - Légers, idéaux pour la gestion des fichiers, le contrôle des processus et les tâches en ligne de commande
- Scripts Python - Plus puissants pour la logique complexe, les interactions avec les API et le traitement des données
La combinaison des deux offre le meilleur des deux mondes. Bash pour les tâches système rapides, Python pour les opérations plus complexes - exécutés ensemble via cron pour une exécution planifiée.
Principes de base de cron : Planifier votre automatisation
Cron est le planificateur de tâches standard sur les systèmes Unix. Commandes importantes :
crontab -e Modifier votre fichier crontab
crontab -l Afficher les tâches planifiées
Une ligne crontab standard ressemble à ceci :
* /chemin/vers/script.sh
Où les astérisques représentent :
- Minute (0-59)
- Heure (0-23)
- Jour du mois (1-31)
- Mois (1-12)
- Jour de la semaine (0-7, où 0 et 7 correspondent tous deux à dimanche)
Exemples pratiques d’automatisation avec Bash
1. Nettoyage automatique des fichiers journaux
Créez un script clean_logs.sh :
#!/bin/bash
find /var/log -name "*.log" -type f -mtime +30 -exec rm -f {} \;
echo "$(date): Logs plus anciens que 30 jours supprimés" >> /var/log/cleanup.log
Ajoutez-le à cron pour une exécution mensuelle :
0 0 1 /bin/bash /chemin/vers/clean_logs.sh
2. Création de sauvegardes automatiques
#!/bin/bash
tar -czf /backups/website_$(date +\%Y\%m\%d).tar.gz /var/www/html
find /backups -name "*.tar.gz" -mtime +14 -exec rm {} \;
Automatisation avec Python pour des tâches plus complexes
Là où Bash montre ses limites, Python excelle. Exemple : un script de surveillance qui vérifie une API et envoie une notification en cas de problème.
#!/usr/bin/env python3
import requests
import smtplib
Guide Pixzo
Ce guide vous explique comment installer Pixzo sur votre serveur Linux. Pixzo est un petit outil de surveillance qui tourne avec Docker et systemd.
Prérequis
- Un serveur avec Ubuntu 22.04 ou plus récent
- Docker installé et démarré
- Les droits root ou sudo
Étape 1 : Télécharger l'image
Commencez par récupérer l'image officielle depuis le registre :
docker pull pixzo/pixzo:latest
Étape 2 : Créer le fichier de configuration
Créez un répertoire pour la configuration, puis un fichier config.yml :
mkdir -p /etc/pixzo
nano /etc/pixzo/config.yml
Ajoutez le contenu suivant, en adaptant l'adresse du serveur API si nécessaire :
serveur: "https://api.pixzo.example"
intervalle: 60
journal: "/var/log/pixzo.log"
Étape 3 : Lancer le conteneur
Utilisez la commande ci-dessous pour démarrer Pixzo avec Docker :
docker run -d --name pixzo \
-v /etc/pixzo:/etc/pixzo \
-v /var/log:/var/log \
--restart unless-stopped \
pixzo/pixzo:latest
Étape 4 : Vérifier le fonctionnement
Pour vérifier que tout tourne correctement, regardez les journaux du conteneur :
docker logs pixzo
Vous devriez voir une ligne qui indique que le service est actif. Si ce n'est pas le cas, vérifiez la connexion à l'API avec la fonction de test intégrée :
def check_api():
try:
response = requests.get("https://api.je-service.nl/status")
return response.status_code == 200
except:
return False
Étape 5 : Configurer systemd
Pour que Pixzo démarre automatiquement au boot, créez une unité systemd. Créez le fichier /etc/systemd/system/pixzo.service :
[Unit]
Description=Service Pixzo
Requires=docker.service
After=docker.service
[Service]
ExecStart=/usr/bin/docker start -a pixzo
ExecStop=/usr/bin/docker stop pixzo
Restart=always
[Install]
WantedBy=multi-user.target
Ensuite, activez et démarrez le service :
systemctl daemon-reload
systemctl enable pixzo
systemctl start pixzo
Dépannage
Le conteneur ne démarre pas
Vérifiez que le fichier config.yml est bien valide et que les chemins montés existent. Utilisez docker logs pixzo pour voir les erreurs.
L'API n'est pas joignable
Testez la connexion depuis le conteneur avec :
docker exec pixzo curl https://api.je-service.nl/status
Si cela échoue, vérifiez votre pare-feu ou votre proxy.
Conclusion
Pixzo est maintenant installé et surveille votre serveur. Pour plus d'informations, consultez la documentation officielle sur le site de Pixzo.