54 lines
1.5 KiB
Python
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}")
|
|
|