"Cache paramètres de connexion"
This commit is contained in:
40
Monitor.py
40
Monitor.py
@@ -4,9 +4,16 @@ from datetime import datetime, timedelta
|
|||||||
import time
|
import time
|
||||||
import smtplib
|
import smtplib
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
import pandas as pd
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import os
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
if os.name != 'nt':
|
||||||
|
log_dir = Path('/home/debian/Gestion_sondes/Logs')
|
||||||
|
else:
|
||||||
|
log_dir = Path.cwd() / 'Logs'
|
||||||
|
|
||||||
|
log_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
@@ -18,11 +25,6 @@ config = {
|
|||||||
"database": os.getenv("DB_NAME")
|
"database": os.getenv("DB_NAME")
|
||||||
}
|
}
|
||||||
|
|
||||||
# Charger les destinataires depuis .env
|
|
||||||
# Charger les destinataires depuis .env
|
|
||||||
|
|
||||||
destinataires = os.getenv("DESTINATAIRES_MAIL", "").split(',')
|
|
||||||
|
|
||||||
# --- Suivi des alertes actives pour rappels ---
|
# --- Suivi des alertes actives pour rappels ---
|
||||||
alertes_actives = {}
|
alertes_actives = {}
|
||||||
|
|
||||||
@@ -30,18 +32,14 @@ alertes_actives = {}
|
|||||||
def envoyer_mail(sujet, message, destinataires_list):
|
def envoyer_mail(sujet, message, destinataires_list):
|
||||||
msg = MIMEText(message)
|
msg = MIMEText(message)
|
||||||
msg['Subject'] = sujet
|
msg['Subject'] = sujet
|
||||||
msg['From'] = 'alertes_saclay@domo91.fr'
|
msg['From'] = os.getenv("EMAIL_FROM")
|
||||||
msg['To'] = ', '.join(destinataires_list)
|
msg['To'] = ', '.join(destinataires_list)
|
||||||
try:
|
|
||||||
with smtplib.SMTP_SSL('smtp.mail.ovh.net', 465) as server:
|
|
||||||
|
|
||||||
server.login('alertes_saclay@domo91.fr', 'Kdpke674y23Feq^H')
|
try:
|
||||||
|
with smtplib.SMTP_SSL(os.getenv("SMTP_HOST"), int(os.getenv("SMTP_PORT"))) as server:
|
||||||
|
server.login(os.getenv("EMAIL_FROM"), os.getenv("EMAIL_PASSWORD"))
|
||||||
server.sendmail(msg['From'], destinataires_list, msg.as_string())
|
server.sendmail(msg['From'], destinataires_list, msg.as_string())
|
||||||
print(f"📧 Mail envoyé à {destinataires_list}", flush=True)
|
print(f"📧 Mail envoyé à {destinataires_list}", flush=True)
|
||||||
server.login('alertes_saclay@domo91.fr','Kdpke674y23Feq^H')
|
|
||||||
server.sendmail(msg['From'], destinataires, msg.as_string())
|
|
||||||
print(f"📧 Mail envoyé à {destinataires}", flush=True)
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Erreur envoi mail : {e}", flush=True)
|
print(f"Erreur envoi mail : {e}", flush=True)
|
||||||
|
|
||||||
@@ -107,7 +105,8 @@ def surveiller():
|
|||||||
f"La sonde '{nom_sonde}' du site '{lieu}' a dépassé le seuil de {seuil}°C "
|
f"La sonde '{nom_sonde}' du site '{lieu}' a dépassé le seuil de {seuil}°C "
|
||||||
f"depuis plus de 30 minutes.\nHeure : {maintenant.strftime('%Y-%m-%d %H:%M:%S')}"
|
f"depuis plus de 30 minutes.\nHeure : {maintenant.strftime('%Y-%m-%d %H:%M:%S')}"
|
||||||
)
|
)
|
||||||
envoyer_mail(sujet, message, destinataires)
|
destinataires_list = os.getenv("EMAIL_DESTINATAIRES").split(",")
|
||||||
|
envoyer_mail(sujet, message, destinataires_list)
|
||||||
|
|
||||||
# Suivi pour rappels
|
# Suivi pour rappels
|
||||||
alertes_actives[nom_sonde] = maintenant
|
alertes_actives[nom_sonde] = maintenant
|
||||||
@@ -121,7 +120,8 @@ def surveiller():
|
|||||||
f"La sonde '{nom_sonde}' du site '{lieu}' est TOUJOURS en dépassement de seuil (>{seuil}°C).\n"
|
f"La sonde '{nom_sonde}' du site '{lieu}' est TOUJOURS en dépassement de seuil (>{seuil}°C).\n"
|
||||||
f"Heure : {maintenant.strftime('%Y-%m-%d %H:%M:%S')}"
|
f"Heure : {maintenant.strftime('%Y-%m-%d %H:%M:%S')}"
|
||||||
)
|
)
|
||||||
envoyer_mail(sujet, message, destinataires)
|
destinataires_list = os.getenv("EMAIL_DESTINATAIRES").split(",")
|
||||||
|
envoyer_mail(sujet, message, destinataires_list)
|
||||||
alertes_actives[nom_sonde] = maintenant
|
alertes_actives[nom_sonde] = maintenant
|
||||||
|
|
||||||
# Vérifier retour à la normale (Acquittement)
|
# Vérifier retour à la normale (Acquittement)
|
||||||
@@ -147,9 +147,15 @@ def surveiller():
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
if log_entries:
|
if log_entries:
|
||||||
|
import pandas as pd
|
||||||
df_logs = pd.DataFrame(log_entries)
|
df_logs = pd.DataFrame(log_entries)
|
||||||
|
|
||||||
|
# Sauvegarde principale
|
||||||
|
df_logs.to_csv(log_dir / "monitor.csv", sep=";", index=False)
|
||||||
|
|
||||||
|
# Sauvegarde secondaire (Linux uniquement)
|
||||||
|
if os.name != 'nt':
|
||||||
df_logs.to_csv("/var/log/monitor.csv", sep=";", index=False)
|
df_logs.to_csv("/var/log/monitor.csv", sep=";", index=False)
|
||||||
df_logs.to_csv("/home/debian/Gestion_sondes/Logs/monitor.csv", sep=";", index=False)
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Erreur : {e}", flush=True)
|
print(f"Erreur : {e}", flush=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user