Mise à jour des scripts et docs de log
This commit is contained in:
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
1
.idea/.name
generated
Normal file
1
.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
||||
Non confirmé 897966.crdownload
|
||||
8
.idea/Fichiers_perso.iml
generated
Normal file
8
.idea/Fichiers_perso.iml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.11 (Gestion sondes) (2)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
19
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
19
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,19 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||
<option name="ignoredErrors">
|
||||
<list>
|
||||
<option value="N812" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="ignoredIdentifiers">
|
||||
<list>
|
||||
<option value="paho.mqtt.client.MQTTException" />
|
||||
</list>
|
||||
</option>
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
||||
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
7
.idea/misc.xml
generated
Normal file
7
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.13 (Best_Western) (2)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 (Gestion sondes) (2)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/Fichiers_perso.iml" filepath="$PROJECT_DIR$/.idea/Fichiers_perso.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.")
|
||||
|
||||
85
txt/requirements.txt
Normal file
85
txt/requirements.txt
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user