46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import subprocess
|
|
import smtplib
|
|
from email.mime.text import MIMEText
|
|
|
|
# Récupère tous les services via supervisorctl
|
|
try:
|
|
output = subprocess.getoutput("/usr/bin/supervisorctl status") # adapte le chemin si besoin
|
|
except Exception as e:
|
|
output = f"Erreur récupération supervisorctl: {e}"
|
|
|
|
# Liste tous les états
|
|
etat_services = []
|
|
anomalies = []
|
|
|
|
for line in output.splitlines():
|
|
parts = line.split()
|
|
if len(parts) >= 2:
|
|
nom, statut = parts[0], parts[1]
|
|
etat_services.append(f"{nom} ➤ {statut}")
|
|
if statut != "RUNNING":
|
|
anomalies.append(f"{nom} ➤ {statut}")
|
|
|
|
# Prépare le message
|
|
if anomalies:
|
|
sujet = "⚠️ Alerte Supervisor"
|
|
intro = "🛑 Les services suivants ne sont pas en RUNNING :"
|
|
else:
|
|
sujet = "✅ Rapport quotidien Supervisor"
|
|
intro = "✅ Tous les services supervisés sont en RUNNING."
|
|
|
|
contenu = f"{intro}\n\n" + "\n".join(etat_services)
|
|
|
|
# Prépare et envoie le mail
|
|
msg = MIMEText(contenu)
|
|
msg["Subject"] = sujet
|
|
msg["From"] = "alertes_saclay@domo91.fr"
|
|
msg["To"] = "services@domo91.fr"
|
|
|
|
try:
|
|
with smtplib.SMTP_SSL("smtp.mail.ovh.net", 465) as server:
|
|
server.login("alertes_saclay@domo91.fr", "Kdpke674y23Feq^H")
|
|
server.sendmail(msg["From"], [msg["To"]], msg.as_string())
|
|
print("📧 Mail envoyé.")
|
|
except Exception as e:
|
|
print(f"Erreur envoi mail : {e}")
|