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