diff --git a/supervisor_watchdog.py b/supervisor_watchdog.py index 6a9e47a..c7e8b68 100644 --- a/supervisor_watchdog.py +++ b/supervisor_watchdog.py @@ -1,45 +1,44 @@ import subprocess import smtplib from email.mime.text import MIMEText +from datetime import datetime -# 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 +heure_actuelle = datetime.now().strftime("%H:%M") 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é.") + output = subprocess.check_output("/usr/bin/supervisorctl status", shell=True, text=True) + 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}") except Exception as e: - print(f"Erreur envoi mail : {e}") + etat_services.append("❌ Impossible d'exécuter supervisorctl") + anomalies.append(f"Erreur : {e}") + +# Déclenchement mail si anomalie ou à 07:00 +envoyer_mail = bool(anomalies) or heure_actuelle == "07:00" + +if envoyer_mail: + sujet = "⚠️ Alerte Supervisor" if anomalies else "✅ Rapport quotidien Supervisor" + intro = "🛑 Les services suivants ne sont pas en RUNNING :" if anomalies else "✅ Tous les services supervisés sont en RUNNING." + contenu = f"{intro}\n\n" + "\n".join(etat_services) + + 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}") +else: + print("🕖 Aucun mail envoyé (tout est OK et ce n’est pas l’heure du rapport).")