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.
|
# 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 streamlit as st
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import os
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
load_dotenv()
|
|
||||||
|
|
||||||
st.set_page_config(page_title="Insertion Mysql", layout="centered")
|
st.set_page_config(page_title="Insertion Mysql", layout="centered")
|
||||||
st.title("🗓️ Insertion dans une base MySQL")
|
st.title("🗓️ Insertion dans une base MySQL")
|
||||||
|
|
||||||
# Charger les identifiants
|
# Charger les identifiants
|
||||||
DB_HOST = os.getenv("DB_HOST")
|
DB_HOST = ("54.36.188.119")
|
||||||
DB_USER = os.getenv("DB_USER")
|
DB_USER = ("michel")
|
||||||
DB_PASSWORD = os.getenv("DB_PASSWORD")
|
DB_PASSWORD = ("#SO2&1nf%mZ@jfh")
|
||||||
|
|
||||||
# Connexion sans DB initiale pour lister les bases
|
# Connexion sans DB initiale pour lister les bases
|
||||||
@st.cache_data
|
@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