Files
Gestion_sondes/supervisor_watchdog.py
2025-04-13 13:57:33 +02:00

54 lines
1.5 KiB
Python

import subprocess
import smtplib
from email.mime.text import MIMEText
from datetime import datetime
# --- Config mail ---
EMAIL_FROM = "alertes_saclay@domo91.fr"
EMAIL_PASSWORD = "Kdpke674y23Feq^H"
EMAIL_TO = ["services@domo91.fr"]
SMTP_SERVER = "smtp.mail.ovh.net"
SMTP_PORT = 465
# --- Lister tous les processus ---
output = subprocess.getoutput("supervisorctl status")
lines = output.splitlines()
# --- Analyse des statuts ---
anomalies = []
rapport = []
for line in lines:
parts = line.split()
if len(parts) >= 2:
nom = parts[0]
statut = parts[1]
rapport.append(f"{nom:25}{statut}")
if statut != "RUNNING":
anomalies.append(f"{nom}{statut}")
# --- Mail à envoyer ---
now = datetime.now().strftime("%Y-%m-%d %H:%M")
if anomalies:
sujet = f"⚠️ Alerte Supervisor - {now}"
corps = "🛑 Les services suivants ne sont pas en RUNNING :\n\n" + "\n".join(anomalies)
else:
sujet = f"✅ Rapport quotidien Supervisor - {now}"
corps = "Tous les services supervisés sont en RUNNING.\n\n" + "\n".join(rapport)
msg = MIMEText(corps)
msg["Subject"] = sujet
msg["From"] = EMAIL_FROM
msg["To"] = ", ".join(EMAIL_TO)
# --- Envoi ---
try:
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
server.login(EMAIL_FROM, EMAIL_PASSWORD)
server.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
print(f"📧 Mail envoyé : {sujet}")
except Exception as e:
print(f"Erreur envoi mail : {e}")