diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..bdf94e7
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Non confirmé 897966.crdownload
\ No newline at end of file
diff --git a/.idea/Fichiers_perso.iml b/.idea/Fichiers_perso.iml
new file mode 100644
index 0000000..53942b5
--- /dev/null
+++ b/.idea/Fichiers_perso.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..97194fb
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..cc70081
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..4f360eb
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Societe_Generale.py b/Societe_Generale.py
index 88c100c..d356c30 100644
--- a/Societe_Generale.py
+++ b/Societe_Generale.py
@@ -1,19 +1,18 @@
# Insertion de données da l'app SG.
+# Fichier démarré avec la commande dans le terminal >streamlit run Societe_Generale.py
import streamlit as st
import mysql.connector
from dotenv import load_dotenv
import os
from datetime import datetime
-load_dotenv()
-
st.set_page_config(page_title="Insertion Mysql", layout="centered")
st.title("🗓️ Insertion dans une base MySQL")
# Charger les identifiants
-DB_HOST = os.getenv("DB_HOST")
-DB_USER = os.getenv("DB_USER")
-DB_PASSWORD = os.getenv("DB_PASSWORD")
+DB_HOST = ("54.36.188.119")
+DB_USER = ("michel")
+DB_PASSWORD = ("#SO2&1nf%mZ@jfh")
# Connexion sans DB initiale pour lister les bases
@st.cache_data
diff --git a/docs/Vider_logs_Vps b/docs/Vider_logs_Vps
index e69de29..181d7e8 100644
--- a/docs/Vider_logs_Vps
+++ b/docs/Vider_logs_Vps
@@ -0,0 +1,14 @@
+🧠 Explication :
+Tu te connectes en SSH avec paramiko
+
+Le script vider_logs_recursive.py est exécuté à distance
+
+Tu récupères le stdout et stderr pour voir ce qui s’est passé
+
+
+
+✅ En résumé :
+
+Où ? Que faire ? paramiko requis ?
+Ton PC Lancer Executer_ssh_vider_logs.py → SSH ✅ Oui
+Ton VPS Avoir un script Python simple de vidage logs ❌ Non
diff --git a/docs/log_viewer b/docs/log_viewer
index e69de29..675db22 100644
--- a/docs/log_viewer
+++ b/docs/log_viewer
@@ -0,0 +1,24 @@
+✅ Résumé :
+
+Action sur le fichier Résultat dans log_viewer
+ -Le programme écrit une nouvelle ligne ✅ S’affiche immédiatement
+ -Le fichier est vidé (> fichier.log) 🟡 Rien de nouveau, mais pas d’erreur
+ -Le fichier est renommé ou déplacé 🔴 Plus de nouveaux logs affichés
+ -Le fichier est supprimé 🔴 Plus de suivi non plus
+
+✅ Que se passe-t-il lorsqu’un programme écrit dans le fichier log surveillé ?
+Prenons l'exemple :
+
+🔍 Surveillance de : /var/log/deploy_monitor.err.log
+Pendant que ce fichier est ouvert en lecture par ton script, aucun souci :
+
+✅ Si un autre programme (par ex. deploy_monitor.py) écrit une nouvelle ligne dans ce fichier,
+ton script l'affichera instantanément (comme tail -f)
+
+🕵️♂️ Tu verras immédiatement apparaître :
+2025-04-20 12:12:31 - ERROR - Problème de connexion MQTT
+
+Ton script utilise un readline() dans une boucle avec seek(0, SEEK_END) au démarrage,
+ donc il suit les ajouts en direct sans recharger le fichier complet à chaque fois.
+
+Pour lancer le programme : python3 /home/debian/travail/tools/log_viewer.py
diff --git a/log_viewer.py b/log_viewer.py
index e69de29..922b6d2 100644
--- a/log_viewer.py
+++ b/log_viewer.py
@@ -0,0 +1,56 @@
+import os
+import time
+
+# 📁 Dossier contenant les fichiers de logs
+DOSSIER_LOGS = "/var/log"
+
+# 📌 Récupère tous les .log du dossier (récursivement si besoin)
+import os
+import time
+
+# 📁 Répertoire de logs à analyser
+DOSSIER_LOGS = "/var/log"
+
+# 🔍 Demande un filtre à l'utilisateur
+filtre = input("🔎 Entrer un mot-clé pour filtrer les fichiers logs (ex: 'meudon', 'streamlit') : ").lower()
+
+# 📋 Recherche récursive des fichiers .log
+fichiers_logs = []
+for racine, _, fichiers in os.walk(DOSSIER_LOGS):
+ for fichier in fichiers:
+ if fichier.endswith(".log"):
+ chemin_complet = os.path.join(racine, fichier)
+ if filtre in fichier.lower() or filtre in chemin_complet.lower():
+ fichiers_logs.append(chemin_complet)
+
+# 🛑 Aucun résultat ?
+if not fichiers_logs:
+ print(f"Aucun fichier .log correspondant à '{filtre}' trouvé.")
+ exit(1)
+
+# 📑 Affiche les résultats filtrés
+print(f"\n📄 Logs trouvés correspondant à '{filtre}':\n")
+for i, fichier in enumerate(fichiers_logs):
+ print(f"[{i}] {fichier}")
+
+# ✅ Choix utilisateur
+try:
+ choix = int(input("\nChoisir le numéro du log à surveiller : "))
+ log_file = fichiers_logs[choix]
+except (ValueError, IndexError):
+ print("❌ Choix invalide.")
+ exit(1)
+
+# 🔄 Affichage en temps réel (tail -f like)
+print(f"\n🔍 Surveillance de : {log_file} (Ctrl+C pour quitter)\n")
+with open(log_file, "r") as f:
+ f.seek(0, os.SEEK_END)
+ try:
+ while True:
+ ligne = f.readline()
+ if ligne:
+ print(ligne.strip())
+ else:
+ time.sleep(0.5)
+ except KeyboardInterrupt:
+ print("\n⏹️ Surveillance arrêtée.")
diff --git a/txt/requirements.txt b/txt/requirements.txt
new file mode 100644
index 0000000..8004026
--- /dev/null
+++ b/txt/requirements.txt
@@ -0,0 +1,85 @@
+# Pour le mettre à jour
+# pip freeze > requirements.txt
+#
+altair==5.5.0
+ansi==0.3.7
+attrs==25.3.0
+beautifulsoup4==4.13.3
+blinker==1.9.0
+cachetools==5.5.2
+certifi==2025.1.31
+cffi==1.17.1
+charset-normalizer==3.4.1
+click==8.1.8
+colorama==0.4.6
+colorlog==6.9.0
+comtypes==1.4.10
+contourpy==1.3.1
+cryptography==44.0.2
+cycler==0.12.1
+DateTime==5.5
+deepmerge==2.0b0
+dulwich==0.22.8
+err==3.2.0
+errbot==6.2.0
+et_xmlfile==2.0.0
+Flask==3.1.0
+fonttools==4.57.0
+fpdf==1.7.2
+gitdb==4.0.12
+GitPython==3.1.44
+idna==3.10
+importlib==1.0.4
+itsdangerous==2.2.0
+Jinja2==3.1.6
+jsonschema==4.23.0
+jsonschema-specifications==2024.10.1
+kiwisolver==1.4.8
+Markdown==3.7
+MarkupSafe==3.0.1
+matplotlib==3.10.1
+mysql==0.0.3
+mysql-connector==2.2.9
+mysql-connector-python==9.2.0
+mysqlclient==2.2.7
+narwhals==1.33.0
+numpy==2.2.4
+openpyxl==3.1.5
+packaging==24.2
+paho-mqtt==2.1.0
+pandas==2.2.3
+pillow==11.1.0
+protobuf==5.29.4
+pyarrow==19.0.1
+pycparser==2.22
+pydeck==0.9.1
+Pygments==2.16.1
+pygments-markdown-lexer==0.1.0.dev39
+pyOpenSSL==25.0.0
+pyparsing==3.2.3
+python-dateutil==2.9.0.post0
+python-dotenv==1.1.0
+pytz==2025.2
+referencing==0.36.2
+requests==2.32.3
+rpds-py==0.24.0
+schedule==1.2.2
+setproctitle==1.3.5
+six==1.17.0
+smmap==5.0.2
+soupsieve==2.6
+streamlit==1.44.1
+subprocess-alive==0.10
+tenacity==9.1.2
+timedelta==2020.12.3
+toml==0.10.2
+tornado==6.4.2
+typing_extensions==4.12.2
+tzdata==2025.2
+urllib3==2.3.0
+waitress==3.0.2
+watchdog==6.0.0
+WebOb==1.8.8
+WebTest==3.0.4
+Werkzeug==3.1.3
+zope.interface==7.2