Automatiser l'Envoi de Rapports Système au SysAdmin Chaque Minute avec Python & Cron
Introduction Dans cet article, nous allons apprendre à automatiser un script Python qui surveille les performances d'un serveur et envoie un rapport par email toutes les minutes. Ce rapport comprend : L'utilisation du processeur (CPU) La consommation de mémoire (RAM) L'espace disque disponible Et même l'adresse IP publique du serveur C'est un excellent exercice de sysadmin et un outil utile en production. Prérequis Avant de commencer, assure-toi d'avoir : Un serveur Linux ou une machine virtuelle Python 3 installé (python3 --version) Un accès à crontab Un compte email pour l'envoi (ex. : Gmail) Étape 1 : Installer les dépendances Ouvre ton terminal et exécute : pip3 install psutil requests Ces bibliothèques permettent de récupérer les stats système (psutil) et de connaître l'IP publique (requests). Étape 2 : Le Script Python Crée un fichier server_report.py : import psutil import smtplib import socket import requests from email.mime.text import MIMEText from datetime import datetime Configuration TO_EMAIL = "sysadmin_aws_cdkin4@mtech-rdc.org" FROM_EMAIL = "your_email@example.com" # Remplace avec ton email EMAIL_PASSWORD = "your_password" # Mot de passe d'application si Gmail SMTP_SERVER = "smtp.gmail.com" SMTP_PORT = 587 def get_server_stats(): mem = psutil.virtual_memory() disk = psutil.disk_usage('/') cpu = psutil.cpu_percent(interval=1) hostname = socket.gethostname() local_ip = socket.gethostbyname(hostname) public_ip = requests.get("https://ifconfig.me").text.strip() return f""" RAPPORT DU SERVEUR - {datetime.now().strftime("%Y-%m-%d %H:%M:%S")} IP publique : {public_ip} IP locale : {local_ip} Hostname : {hostname} CPU utilisé : {cpu} % RAM utilisée : {mem.percent} % Disque utilisé : {disk.percent} % Espace libre : {round(disk.free / (1024**3), 2)} Go -- Fin du rapport -- """ def send_email(subject, body): msg = MIMEText(body) msg['Subject'] = subject msg['From'] = FROM_EMAIL msg['To'] = TO_EMAIL try: server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) server.starttls() server.login(FROM_EMAIL, EMAIL_PASSWORD) server.send_message(msg) server.quit() print(" Rapport envoyé.") except Exception as e: print(f" Erreur : {e}") if name == "main": stats = get_server_stats() send_email(" Rapport Automatique du Serveur", stats) Astuce sécurité : utiliser un mot de passe d'application Si tu utilises Gmail, crée un mot de passe d'application (dans tes paramètres de sécurité) pour ne pas exposer ton mot de passe principal. Étape 3 : Tester le script python3 server_report.py Tu devrais recevoir un email avec les stats du serveur dans ta boîte de réception. Étape 4 : Automatiser avec cron Ouvre l'éditeur de tâches planifiées : crontab -e Ajoute cette ligne pour exécuter le script chaque minute : * * * * /usr/bin/python3 /chemin/vers/server_report.py ⚠️ Vérifie le chemin exact de Python avec which python3 ⚠️ Mets le chemin complet de ton script Étape 5 : Visualiser les logs en temps réel Si tu veux voir les sorties du script (comme les erreurs ou confirmations) : tail -f /var/log/syslog # ou /var/log/cron.log selon ta distro Tu peux aussi rediriger la sortie du script vers un fichier de log * * * * /usr/bin/python3 /chemin/vers/server_report.py >> /home/ismael/logs/server.log 2>&1 Conclusion En combinant Python et Cron, tu peux créer un outil de monitoring système minimaliste, mais puissant. Tu es maintenant capable de surveiller l'état de n'importe quel serveur et d'envoyer des alertes automatiquement à ton SysAdmin. Cette solution est idéale pour Les petits projets auto-hébergés Le monitoring d'urgence L'apprentissage de l'administration système

Introduction
Dans cet article, nous allons apprendre à automatiser un script Python qui surveille les performances d'un serveur et envoie un rapport par email toutes les minutes. Ce rapport comprend :
L'utilisation du processeur (CPU)
La consommation de mémoire (RAM)
L'espace disque disponible
Et même l'adresse IP publique du serveur
C'est un excellent exercice de sysadmin et un outil utile en production.
Prérequis
Avant de commencer, assure-toi d'avoir :
Un serveur Linux ou une machine virtuelle
Python 3 installé (python3 --version)
Un accès à crontab
Un compte email pour l'envoi (ex. : Gmail)
Étape 1 : Installer les dépendances
Ouvre ton terminal et exécute :
pip3 install psutil requests
Ces bibliothèques permettent de récupérer les stats système (psutil) et de connaître l'IP publique (requests).
Étape 2 : Le Script Python
Crée un fichier server_report.py :
import psutil
import smtplib
import socket
import requests
from email.mime.text import MIMEText
from datetime import datetime
Configuration
TO_EMAIL = "sysadmin_aws_cdkin4@mtech-rdc.org"
FROM_EMAIL = "your_email@example.com" # Remplace avec ton email
EMAIL_PASSWORD = "your_password" # Mot de passe d'application si Gmail
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
def get_server_stats():
mem = psutil.virtual_memory()
disk = psutil.disk_usage('/')
cpu = psutil.cpu_percent(interval=1)
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
public_ip = requests.get("https://ifconfig.me").text.strip()
return f"""
RAPPORT DU SERVEUR - {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}
IP publique : {public_ip}
IP locale : {local_ip}
Hostname : {hostname}
CPU utilisé : {cpu} %
RAM utilisée : {mem.percent} %
Disque utilisé : {disk.percent} %
Espace libre : {round(disk.free / (1024**3), 2)} Go
-- Fin du rapport --
"""
def send_email(subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = FROM_EMAIL
msg['To'] = TO_EMAIL
try:
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(FROM_EMAIL, EMAIL_PASSWORD)
server.send_message(msg)
server.quit()
print(" Rapport envoyé.")
except Exception as e:
print(f" Erreur : {e}")
if name == "main":
stats = get_server_stats()
send_email(" Rapport Automatique du Serveur", stats)
Astuce sécurité : utiliser un mot de passe d'application
Si tu utilises Gmail, crée un mot de passe d'application (dans tes paramètres de sécurité) pour ne pas exposer ton mot de passe principal.
Étape 3 : Tester le script
python3 server_report.py
Tu devrais recevoir un email avec les stats du serveur dans ta boîte de réception.
Étape 4 : Automatiser avec cron
Ouvre l'éditeur de tâches planifiées :
crontab -e
Ajoute cette ligne pour exécuter le script chaque minute :
- * * * * /usr/bin/python3 /chemin/vers/server_report.py
⚠️ Vérifie le chemin exact de Python avec which python3
⚠️ Mets le chemin complet de ton script
Étape 5 : Visualiser les logs en temps réel
Si tu veux voir les sorties du script (comme les erreurs ou confirmations) :
tail -f /var/log/syslog # ou /var/log/cron.log selon ta distro
Tu peux aussi rediriger la sortie du script vers un fichier de log
- * * * * /usr/bin/python3 /chemin/vers/server_report.py >> /home/ismael/logs/server.log 2>&1
Conclusion
En combinant Python et Cron, tu peux créer un outil de monitoring système minimaliste, mais puissant. Tu es maintenant capable de surveiller l'état de n'importe quel serveur et d'envoyer des alertes automatiquement à ton SysAdmin.
Cette solution est idéale pour
Les petits projets auto-hébergés
Le monitoring d'urgence
L'apprentissage de l'administration système