From bfa5149bcc6e13e4ab5df9a020ed5cfc6363b3e3 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:10:22 +0200 Subject: [PATCH 01/51] Add fichier.txt --- fichier.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 fichier.txt diff --git a/fichier.txt b/fichier.txt new file mode 100644 index 0000000..2e0a161 --- /dev/null +++ b/fichier.txt @@ -0,0 +1,2 @@ +Bonjour +Monde From 88909eb4ea3e497fbd9e68153613c32db749caee Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:10:45 +0200 Subject: [PATCH 02/51] Add erreur.txt with listed error of server.log --- mon-projet/erreur.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mon-projet/erreur.txt diff --git a/mon-projet/erreur.txt b/mon-projet/erreur.txt new file mode 100644 index 0000000..259593d --- /dev/null +++ b/mon-projet/erreur.txt @@ -0,0 +1,5 @@ +2024-01-15 08:02:45 ERROR Failed to connect to Azure Storage: connection timeout +2024-01-15 08:05:33 ERROR Authentication failed for service account: deploy_svc +2024-01-15 08:07:42 ERROR Database query timeout after 30s on table: audit_logs +2024-01-15 08:09:00 ERROR Max retries exceeded - Azure Storage service unavailable +2024-01-15 08:12:45 ERROR Backup failed: insufficient permissions on /var/backup/azure From 3516a4e3a9a36d89a68d84dbd3c0fde32c58dd5e Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:11:11 +0200 Subject: [PATCH 03/51] Add rapport.txt file --- mon-projet/rapport.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 mon-projet/rapport.txt diff --git a/mon-projet/rapport.txt b/mon-projet/rapport.txt new file mode 100644 index 0000000..034a5c1 --- /dev/null +++ b/mon-projet/rapport.txt @@ -0,0 +1,5 @@ +=== RAPPORT DE LOGS === + 22 lignes au total + 5 ERROR + 4 WARNING + 3 CRITICAL From d65f4f2e5a3fe8be0a4a184385794ad76b6bd600 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:11:26 +0200 Subject: [PATCH 04/51] Update README.txt --- mon-projet/README.txt | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 mon-projet/README.txt diff --git a/mon-projet/README.txt b/mon-projet/README.txt new file mode 100644 index 0000000..2b1f1a7 --- /dev/null +++ b/mon-projet/README.txt @@ -0,0 +1,41 @@ +# Mon projet Bash + +# 1. Combien de lignes contient server.log ? + + Le fichier server.log contient 22 lignes. + +# 2. Affichez uniquement les 5 premières lignes + + 2024-01-15 08:00:01 INFO Application started on port 8080 + 2024-01-15 08:00:05 INFO Connected to Azure SQL Database successfully + 2024-01-15 08:01:22 WARNING High memory usage detected: 78% + 2024-01-15 08:02:45 ERROR Failed to connect to Azure Storage: connection timeout + 2024-01-15 08:03:10 INFO Request processed: GET /api/health [200] + +# 3. Affichez uniquement les 3 dernières lignes + + 2024-01-15 08:19:30 CRITICAL Azure Key Vault unreachable — secrets cannot be retrieved + 2024-01-15 08:20:00 INFO Health check passed: all 3 replicas running + 2024-01-15 08:21:00 CRITICAL Disk full on /var/log — logging suspended + +# 4. Combien de lignes contiennent le mot ERROR ? + + 5 lignes contiennent le mot "ERROR". + +# 5. Affichez toutes les lignes WARNING + + 2024-01-15 08:01:22 WARNING High memory usage detected: 78% + 2024-01-15 08:06:15 WARNING CPU usage spike detected: 92% + 2024-01-15 08:10:15 WARNING Disk space below threshold: 15% remaining on /dev/sda1 + 2024-01-15 08:16:30 WARNING SSL certificate expires in 14 days for api.azuretech.fr + +# 6. Affichez toutes les lignes CRITICAL + + 2024-01-15 08:18:00 CRITICAL Database connection pool exhausted — all 20 connections in use + 2024-01-15 08:19:30 CRITICAL Azure Key Vault unreachable — secrets cannot be retrieved + 2024-01-15 08:21:00 CRITICAL Disk full on /var/log — logging suspended + +# 7. Combien d'erreurs ET de critiques y a-t-il au total ? + + Il y'en a 8 au total. + From 8599f2c9f6b9182cd423dd95421b93625e3dbe22 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:11:37 +0200 Subject: [PATCH 05/51] create setting.txt file --- mon-projet/config/settings.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mon-projet/config/settings.txt diff --git a/mon-projet/config/settings.txt b/mon-projet/config/settings.txt new file mode 100644 index 0000000..e69de29 From a1fade387f1be8507a6b2f163fc8475521d41b27 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:12:03 +0200 Subject: [PATCH 06/51] create app.log file with log of server.log file --- mon-projet/logs/app.log | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 mon-projet/logs/app.log diff --git a/mon-projet/logs/app.log b/mon-projet/logs/app.log new file mode 100644 index 0000000..d2d2378 --- /dev/null +++ b/mon-projet/logs/app.log @@ -0,0 +1,22 @@ +2024-01-15 08:00:01 INFO Application started on port 8080 +2024-01-15 08:00:05 INFO Connected to Azure SQL Database successfully +2024-01-15 08:01:22 WARNING High memory usage detected: 78% +2024-01-15 08:02:45 ERROR Failed to connect to Azure Storage: connection timeout +2024-01-15 08:03:10 INFO Request processed: GET /api/health [200] +2024-01-15 08:05:33 ERROR Authentication failed for service account: deploy_svc +2024-01-15 08:06:15 WARNING CPU usage spike detected: 92% +2024-01-15 08:07:42 ERROR Database query timeout after 30s on table: audit_logs +2024-01-15 08:08:00 INFO Retry attempt 1/3 for Azure Storage connection +2024-01-15 08:08:30 INFO Retry attempt 2/3 for Azure Storage connection +2024-01-15 08:09:00 ERROR Max retries exceeded - Azure Storage service unavailable +2024-01-15 08:10:15 WARNING Disk space below threshold: 15% remaining on /dev/sda1 +2024-01-15 08:11:22 INFO Backup job started: daily-backup-2024-01-15 +2024-01-15 08:12:45 ERROR Backup failed: insufficient permissions on /var/backup/azure +2024-01-15 08:14:03 INFO Alert sent to monitoring team via Azure Monitor +2024-01-15 08:15:00 INFO Scheduled maintenance check completed +2024-01-15 08:16:30 WARNING SSL certificate expires in 14 days for api.azuretech.fr +2024-01-15 08:18:00 CRITICAL Database connection pool exhausted — all 20 connections in use +2024-01-15 08:18:55 INFO Kubernetes pod restarted: api-deployment-7d9f8b-xkp2m +2024-01-15 08:19:30 CRITICAL Azure Key Vault unreachable — secrets cannot be retrieved +2024-01-15 08:20:00 INFO Health check passed: all 3 replicas running +2024-01-15 08:21:00 CRITICAL Disk full on /var/log — logging suspended From 78468f2c304ee64a6fb8615931fab8e00afb3601 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:12:27 +0200 Subject: [PATCH 07/51] create app.log.bak file ( copy of app.log ) --- mon-projet/logs/app.log.bak | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 mon-projet/logs/app.log.bak diff --git a/mon-projet/logs/app.log.bak b/mon-projet/logs/app.log.bak new file mode 100644 index 0000000..d2d2378 --- /dev/null +++ b/mon-projet/logs/app.log.bak @@ -0,0 +1,22 @@ +2024-01-15 08:00:01 INFO Application started on port 8080 +2024-01-15 08:00:05 INFO Connected to Azure SQL Database successfully +2024-01-15 08:01:22 WARNING High memory usage detected: 78% +2024-01-15 08:02:45 ERROR Failed to connect to Azure Storage: connection timeout +2024-01-15 08:03:10 INFO Request processed: GET /api/health [200] +2024-01-15 08:05:33 ERROR Authentication failed for service account: deploy_svc +2024-01-15 08:06:15 WARNING CPU usage spike detected: 92% +2024-01-15 08:07:42 ERROR Database query timeout after 30s on table: audit_logs +2024-01-15 08:08:00 INFO Retry attempt 1/3 for Azure Storage connection +2024-01-15 08:08:30 INFO Retry attempt 2/3 for Azure Storage connection +2024-01-15 08:09:00 ERROR Max retries exceeded - Azure Storage service unavailable +2024-01-15 08:10:15 WARNING Disk space below threshold: 15% remaining on /dev/sda1 +2024-01-15 08:11:22 INFO Backup job started: daily-backup-2024-01-15 +2024-01-15 08:12:45 ERROR Backup failed: insufficient permissions on /var/backup/azure +2024-01-15 08:14:03 INFO Alert sent to monitoring team via Azure Monitor +2024-01-15 08:15:00 INFO Scheduled maintenance check completed +2024-01-15 08:16:30 WARNING SSL certificate expires in 14 days for api.azuretech.fr +2024-01-15 08:18:00 CRITICAL Database connection pool exhausted — all 20 connections in use +2024-01-15 08:18:55 INFO Kubernetes pod restarted: api-deployment-7d9f8b-xkp2m +2024-01-15 08:19:30 CRITICAL Azure Key Vault unreachable — secrets cannot be retrieved +2024-01-15 08:20:00 INFO Health check passed: all 3 replicas running +2024-01-15 08:21:00 CRITICAL Disk full on /var/log — logging suspended From adc5550a19080615285cadedc4cd1b626000e5b4 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:12:35 +0200 Subject: [PATCH 08/51] create app.sh file --- mon-projet/src/app.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mon-projet/src/app.sh diff --git a/mon-projet/src/app.sh b/mon-projet/src/app.sh new file mode 100644 index 0000000..e69de29 From d286b0b348795ddbdbe67b54cfa02fe5bfd6f49c Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:18:17 +0200 Subject: [PATCH 09/51] create info.sh file --- mon-projet/src/info.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mon-projet/src/info.sh diff --git a/mon-projet/src/info.sh b/mon-projet/src/info.sh new file mode 100644 index 0000000..e69de29 From 88ff68f49379a72d028a6446b8e78dc436158975 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:30:18 +0200 Subject: [PATCH 10/51] Add env information log script --- mon-projet/src/info.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) mode change 100644 => 100755 mon-projet/src/info.sh diff --git a/mon-projet/src/info.sh b/mon-projet/src/info.sh old mode 100644 new mode 100755 index e69de29..7131830 --- a/mon-projet/src/info.sh +++ b/mon-projet/src/info.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# info.sh — Affiche des informations sur l'environnement + +NOM_PROJET="NexaCloud" +VERSION="1.1.0" +LOG_FILE="ressources/server.log" + +echo "===============================" +echo " Projet : $NOM_PROJET" +echo " Version : $VERSION" +echo "===============================" + +# Vérifier que le fichier de log existe +if [ -f "$LOG_FILE" ]; then + NB_LIGNES=$(wc -l < "$LOG_FILE" | tr -d ' ') + echo " Log : $LOG_FILE ($NB_LIGNES lignes)" +else + echo " Log : fichier introuvable !" +fi + +echo "===============================" \ No newline at end of file From 13e1aafd190471f7794a3a3925edc60d907e999d Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:35:22 +0200 Subject: [PATCH 11/51] Creat check-logs.sh - show log state and show alert --- mon-projet/src/check-logs.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 mon-projet/src/check-logs.sh diff --git a/mon-projet/src/check-logs.sh b/mon-projet/src/check-logs.sh new file mode 100755 index 0000000..038269c --- /dev/null +++ b/mon-projet/src/check-logs.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# check-logs.sh — Vérifie l'état des logs et alerte si nécessaire + +LOG_FILE="ressources/server.log" +SEUIL_ERREURS=3 + +if [ ! -f "$LOG_FILE" ]; then + echo "ERREUR : le fichier $LOG_FILE n'existe pas." + exit 1 +fi + +NB_ERREURS=$(grep -c "ERROR" "$LOG_FILE") +NB_CRITIQUES=$(grep -c "CRITICAL" "$LOG_FILE") +NB_WARNINGS=$(grep -c "WARNING" "$LOG_FILE") + +echo "=== Analyse de $LOG_FILE ===" +echo " INFO : $(grep -c "INFO" "$LOG_FILE")" +echo " WARNING : $NB_WARNINGS" +echo " ERROR : $NB_ERREURS" +echo " CRITICAL : $NB_CRITIQUES" +echo "===========================" + +# Vérifier le seuil d'erreurs +if [ $NB_CRITIQUES -gt 0 ]; then + echo "ALERTE CRITIQUE : $NB_CRITIQUES incident(s) critique(s) détecté(s) !" +elif [ $NB_ERREURS -gt $SEUIL_ERREURS ]; then + echo "ATTENTION : $NB_ERREURS erreurs détectées (seuil : $SEUIL_ERREURS)" +else + echo "OK : les logs sont dans les normes." +fi \ No newline at end of file From 01ba7a499631b5252a9febf292e892abb74f832a Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 11:51:26 +0200 Subject: [PATCH 12/51] Add dynamic path for log file and add empty argument verification --- mon-projet/src/check-logs.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mon-projet/src/check-logs.sh b/mon-projet/src/check-logs.sh index 038269c..0b33eee 100755 --- a/mon-projet/src/check-logs.sh +++ b/mon-projet/src/check-logs.sh @@ -1,14 +1,18 @@ #!/bin/bash # check-logs.sh — Vérifie l'état des logs et alerte si nécessaire -LOG_FILE="ressources/server.log" +LOG_FILE="$1" SEUIL_ERREURS=3 -if [ ! -f "$LOG_FILE" ]; then - echo "ERREUR : le fichier $LOG_FILE n'existe pas." +# Vérifier que l'argument est bien fourni +if [ -z "$1" ]; then + echo "Usage : $0 " exit 1 fi +# Tester plusieurs conditions avec && et || +[ -f "$LOG_FILE" ] && echo "Fichier trouvé" || { echo "Fichier absent" ; exit 1; } + NB_ERREURS=$(grep -c "ERROR" "$LOG_FILE") NB_CRITIQUES=$(grep -c "CRITICAL" "$LOG_FILE") NB_WARNINGS=$(grep -c "WARNING" "$LOG_FILE") From a69e2fc45aa9f34e3e5f197656521e1de40600f0 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 12:00:04 +0200 Subject: [PATCH 13/51] Add level analysis script --- mon-projet/src/analyse-niveaux.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 mon-projet/src/analyse-niveaux.sh diff --git a/mon-projet/src/analyse-niveaux.sh b/mon-projet/src/analyse-niveaux.sh new file mode 100755 index 0000000..62fd3e9 --- /dev/null +++ b/mon-projet/src/analyse-niveaux.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# analyse-niveaux.sh — Compte chaque niveau de log + +LOG_FILE="ressources/server.log" + +echo "=== Analyse par niveau ===" + +for NIVEAU in INFO WARNING ERROR CRITICAL; do + NB=$(grep -c "$NIVEAU" "$LOG_FILE") + echo " $NIVEAU : $NB occurrence(s)" +done + +echo "==========================" +echo " TOTAL : $(wc -l < "$LOG_FILE") lignes" \ No newline at end of file From ac9f4b50b3c11195a6041733007fafff9a7122da Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 12:06:40 +0200 Subject: [PATCH 14/51] Add rapport.sh file - script to create report file --- mon-projet/src/rapport.sh | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 mon-projet/src/rapport.sh diff --git a/mon-projet/src/rapport.sh b/mon-projet/src/rapport.sh new file mode 100755 index 0000000..9be776e --- /dev/null +++ b/mon-projet/src/rapport.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# rapport.sh — Génère un rapport complet avec des fonctions + +LOG_FILE="${1:-ressources/server.log}" +RAPPORT="mon-projet/logs/rapport-$(date +%Y%m%d-%H%M%S).txt" + +# ── Fonctions ────────────────────────────────────────────────────── + +afficher_titre() { + echo "===========================================" + echo " $1" + echo "===========================================" +} + +compter_niveau() { + local niveau="$1" + local fichier="$2" + grep -c "$niveau" "$fichier" 2>/dev/null || echo 0 +} + +ecrire_section() { + local titre="$1" + local contenu="$2" + echo "" >> "$RAPPORT" + echo "--- $titre ---" >> "$RAPPORT" + echo "$contenu" >> "$RAPPORT" +} + +# ── Script principal ─────────────────────────────────────────────── + +if [ ! -f "$LOG_FILE" ]; then + echo "Fichier introuvable : $LOG_FILE" + exit 1 +fi + +afficher_titre "RAPPORT D'ANALYSE — $(date '+%d/%m/%Y %H:%M')" + +INFO=$(compter_niveau "INFO" "$LOG_FILE") +WARNING=$(compter_niveau "WARNING" "$LOG_FILE") +ERROR=$(compter_niveau "ERROR" "$LOG_FILE") +CRITICAL=$(compter_niveau "CRITICAL" "$LOG_FILE") + +echo " INFO : $INFO" +echo " WARNING : $WARNING" +echo " ERROR : $ERROR" +echo " CRITICAL : $CRITICAL" + +# Écrire le rapport dans un fichier +echo "RAPPORT D'ANALYSE — $(date '+%d/%m/%Y %H:%M')" > "$RAPPORT" +ecrire_section "Compteurs" "INFO=$INFO WARNING=$WARNING ERROR=$ERROR CRITICAL=$CRITICAL" +ecrire_section "Incidents critiques" "$(grep 'CRITICAL' "$LOG_FILE")" +ecrire_section "Erreurs" "$(grep 'ERROR' "$LOG_FILE")" + +echo "" +echo "Rapport sauvegardé : $RAPPORT" \ No newline at end of file From 135d712ef2c6e199d6afcb856cfb35855af72821 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 12:06:49 +0200 Subject: [PATCH 15/51] Create report file --- mon-projet/logs/rapport-20260528-120402.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 mon-projet/logs/rapport-20260528-120402.txt diff --git a/mon-projet/logs/rapport-20260528-120402.txt b/mon-projet/logs/rapport-20260528-120402.txt new file mode 100644 index 0000000..ff51379 --- /dev/null +++ b/mon-projet/logs/rapport-20260528-120402.txt @@ -0,0 +1,16 @@ +RAPPORT D'ANALYSE — 28/05/2026 12:04 + +--- Compteurs --- +INFO=10 WARNING=4 ERROR=5 CRITICAL=3 + +--- Incidents critiques --- +2024-01-15 08:18:00 CRITICAL Database connection pool exhausted — all 20 connections in use +2024-01-15 08:19:30 CRITICAL Azure Key Vault unreachable — secrets cannot be retrieved +2024-01-15 08:21:00 CRITICAL Disk full on /var/log — logging suspended + +--- Erreurs --- +2024-01-15 08:02:45 ERROR Failed to connect to Azure Storage: connection timeout +2024-01-15 08:05:33 ERROR Authentication failed for service account: deploy_svc +2024-01-15 08:07:42 ERROR Database query timeout after 30s on table: audit_logs +2024-01-15 08:09:00 ERROR Max retries exceeded - Azure Storage service unavailable +2024-01-15 08:12:45 ERROR Backup failed: insufficient permissions on /var/backup/azure From 539196583bf43bf1f4d526da416b08c8e208ee1a Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 12:18:30 +0200 Subject: [PATCH 16/51] test - Add for loop to handle multiple files --- mon-projet/src/rapport.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/mon-projet/src/rapport.sh b/mon-projet/src/rapport.sh index 9be776e..1576c29 100755 --- a/mon-projet/src/rapport.sh +++ b/mon-projet/src/rapport.sh @@ -52,4 +52,20 @@ ecrire_section "Incidents critiques" "$(grep 'CRITICAL' "$LOG_FILE")" ecrire_section "Erreurs" "$(grep 'ERROR' "$LOG_FILE")" echo "" -echo "Rapport sauvegardé : $RAPPORT" \ No newline at end of file +echo "Rapport sauvegardé : $RAPPORT" + +echo "" +# Traiter plusieurs fichiers de log en argument +for FICHIER in "$@"; do + echo "=== Traitement de $FICHIER ===" + ERREURS=$(grep -c "ERROR" "$FICHIER") + echo " $ERREURS erreur(s)" +done +# Appel : ./script.sh logs/app.log logs/backup.log + +# Boucle avec break et continue +for i in $(seq 1 10); do + [ $i -eq 5 ] && continue # sauter le 5 + [ $i -eq 8 ] && break # arrêter au 8 + echo $i +done \ No newline at end of file From f416e70ea3b31b79f6880939a973d1e586e9ebe6 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 12:21:43 +0200 Subject: [PATCH 17/51] Add couleurs.sh file --- mon-projet/src/couleurs.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 mon-projet/src/couleurs.sh diff --git a/mon-projet/src/couleurs.sh b/mon-projet/src/couleurs.sh new file mode 100755 index 0000000..acbd0fc --- /dev/null +++ b/mon-projet/src/couleurs.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# couleurs.sh — Tester les fonctions d'affichage + +# Les codes couleur sont fournis +VERT="\033[0;32m" +ROUGE="\033[0;31m" +JAUNE="\033[0;33m" +CYAN="\033[0;36m" +RESET="\033[0m" + +# Ces fonctions sont déjà écrites — observez leur structure +ok() { echo -e "${VERT}[OK]${RESET} $1"; } +info() { echo -e "${CYAN}[INFO]${RESET} $1"; } +warn() { echo -e "${JAUNE}[WARN]${RESET} $1"; } +err() { echo -e "${ROUGE}[ERR]${RESET} $1"; } + +# TODO: écrivez les fonctions warn() et err() sur le même modèle +# warn() doit afficher en jaune avec le préfixe [WARN] +# err() doit afficher en rouge avec le préfixe [ERR] + + + +# Test — ces lignes doivent afficher chacune dans la bonne couleur +ok "Installation réussie" +info "Démarrage du serveur..." +warn "Mémoire basse : 78%" +err "Connexion échouée" \ No newline at end of file From 81c659fb0eed565dadcf6947b295b0285f9e2d99 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 12:27:48 +0200 Subject: [PATCH 18/51] Add check-env.sh file --- mon-projet/src/check-env.sh | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 mon-projet/src/check-env.sh diff --git a/mon-projet/src/check-env.sh b/mon-projet/src/check-env.sh new file mode 100755 index 0000000..8fc1dea --- /dev/null +++ b/mon-projet/src/check-env.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# check-env.sh — Vérifie que l'environnement est prêt pour NexaCloud + +set -e + +VERT="\033[0;32m" +ROUGE="\033[0;31m" +JAUNE="\033[0;33m" +RESET="\033[0m" + +ok() { echo -e "${VERT} [OK]${RESET} $1"; } +warn() { echo -e "${JAUNE} [WARN]${RESET} $1"; } +err() { echo -e "${ROUGE} [ERR]${RESET} $1"; } + +# Cette fonction vérifie si une commande est installée +# $1 = nom de la commande | $2 = nom à afficher (optionnel) +verifier_commande() { + local cmd="$1" + local nom="${2:-$1}" + # La commande "command -v" vérifie si un programme existe + # &>/dev/null redirige la sortie pour ne rien afficher + if command -v "$cmd" &>/dev/null; then + ok "$nom installé" + else + err "$nom non trouvé" + fi +} + +echo "" +echo "=== Vérification de l'environnement NexaCloud ===" +echo "" + +# TODO: appelez verifier_commande pour tester python3, node, npm et git +# Exemple : verifier_commande "python3" "Python" + + for cmd in python3 node npm git; do + verifier_commande "$cmd" + done + +echo "" + +# TODO: vérifiez que ces deux fichiers existent avec [ -f ] +# et affichez ok ou warn selon le résultat +# Fichiers à vérifier : "config.json" et "ressources/server.log" + +for file in "$@"; do + if [ -f "$file" ]; then + ok "Fichier $file trouvé" + else + warn "Fichier $file manquant" + fi +done + + + +echo "" +echo "=== Vérification terminée ===" +echo "" \ No newline at end of file From f6968fa2424325bed69246604a847efc14d49a0d Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:34:29 +0200 Subject: [PATCH 19/51] complete setup script --- setup.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 setup.sh diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..bb6ee5c --- /dev/null +++ b/setup.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# setup.sh — Prépare le projet NexaCloud en une commande + +set -e + +VERT="\033[0;32m" +ROUGE="\033[0;31m" +CYAN="\033[0;36m" +BOLD="\033[1m" +RESET="\033[0m" + +info() { echo -e "${CYAN}[INFO]${RESET} $1"; } +ok() { echo -e "${VERT}[OK]${RESET} $1"; } +warn() { echo -e "${JAUNE}[WARN]${RESET} $1"; } +err() { + echo -e "${ROUGE}[ERR]${RESET} $1" + exit 1 +} + +# ── Bannière (fournie) ──────────────────────────────────────────────── +echo "" +echo -e "${BOLD}${CYAN}============================================${RESET}" +echo -e "${BOLD}${CYAN} SETUP NEXACLOUD — $(date '+%d/%m/%Y %H:%M')${RESET}" +echo -e "${BOLD}${CYAN}============================================${RESET}" +echo "" + +# ── 1. Vérification des prérequis ───────────────────────────────────── +info "Vérification des prérequis..." + +for cmd in python3 node npm; do + if command -v "$cmd" &>/dev/null; then + ok "$cmd installé" + else + err "$cmd non trouvé" + fi +done + +ok "Prérequis : Python3, Node.js, npm présents" + +# ── 2. Installation des dépendances Python ──────────────────────────── +info "Installation des dépendances Python..." + +if [ -f "python-api/requirements.txt" ]; then + pip install -r python-api/requirements.txt --quiet + ok "Dépendances Python installées" +else + warn "Fichier python-api/requirements.txt non trouvé" +fi + +# ── 3. Installation des dépendances Node ───────────────────────────── +info "Installation des dépendances Node..." + +if [ -f "node-client/package.json" ]; then + cd node-client && npm install --silent && cd .. + ok "Dépendances Node installées" +else + warn "Fichier node-client/package.json non trouvé" +fi + +# ── 4. Analyse des logs ─────────────────────────────────────────────── +info "Analyse des logs..." +LOG="ressources/server.log" + +if [ -f "$LOG" ]; then + NB_ERR=$(grep -c "ERROR" "$LOG") + NB_CRIT=$(grep -c "CRITICAL" "$LOG") + ok "Logs analysés : $NB_ERR erreurs, $NB_CRIT critiques" + [ "$NB_CRIT" -gt 0 ] && echo "" && echo -e "${ROUGE}ATTENTION IL Y A $NB_CRIT ERREURS CRITIQUES${RESET}" || true + while [ "${i=0}" -le $NB_CRIT ]; do + echo "$(grep "CRITICAL" "$LOG" | sed -n "$i"p)" + i=$((i + 1)) + done +else + warn "Fichier de log $LOG non trouvé" +fi + +# ── 5. Message de fin (fourni) ──────────────────────────────────────── +echo "" +echo -e "${BOLD}${VERT}============================================${RESET}" +echo -e "${BOLD}${VERT} SETUP TERMINÉ AVEC SUCCÈS ${RESET}" +echo -e "${BOLD}${VERT}============================================${RESET}" +echo "" +echo " Lancer l'API Python : cd python-api && python3 app.py" +echo " Lancer le client Node: cd node-client && node app.js" +echo "" From 3ba3ea652ebd7ad6225b78aa8436236f7175ac50 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:39:18 +0200 Subject: [PATCH 20/51] Add .env on gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 4f30f55..814fe40 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,7 @@ terraform.rc # Ignore MacOS system files .DS_Store +.env # Optional: ignore graph output files generated by `terraform graph` # *.dot From a91645cb8c3f1ce92f89232e12dea898978979b1 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:39:30 +0200 Subject: [PATCH 21/51] Show port from .env --- setup.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/setup.sh b/setup.sh index bb6ee5c..89d4968 100755 --- a/setup.sh +++ b/setup.sh @@ -3,6 +3,9 @@ set -e +export $(grep -v '^#' .env | xargs) + + VERT="\033[0;32m" ROUGE="\033[0;31m" CYAN="\033[0;36m" @@ -24,6 +27,9 @@ echo -e "${BOLD}${CYAN} SETUP NEXACLOUD — $(date '+%d/%m/%Y %H:%M')${RESET}" echo -e "${BOLD}${CYAN}============================================${RESET}" echo "" +echo "Port configuré : $PORT" +echo "" + # ── 1. Vérification des prérequis ───────────────────────────────────── info "Vérification des prérequis..." From d22d72c8e5f398a5d15e72a39b99bc553b6fe313 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:43:54 +0200 Subject: [PATCH 22/51] Add bin bash --- mon-projet/src/app.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/mon-projet/src/app.sh b/mon-projet/src/app.sh index e69de29..cc1f786 100644 --- a/mon-projet/src/app.sh +++ b/mon-projet/src/app.sh @@ -0,0 +1 @@ +#!/bin/bash \ No newline at end of file From 9b6a95a1c0be3068922d58ccc75f81e1f681e9e0 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:50:00 +0200 Subject: [PATCH 23/51] fix syntax errors --- mon-projet/src/check-logs.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mon-projet/src/check-logs.sh b/mon-projet/src/check-logs.sh index 0b33eee..61bba8c 100755 --- a/mon-projet/src/check-logs.sh +++ b/mon-projet/src/check-logs.sh @@ -10,8 +10,11 @@ if [ -z "$1" ]; then exit 1 fi -# Tester plusieurs conditions avec && et || -[ -f "$LOG_FILE" ] && echo "Fichier trouvé" || { echo "Fichier absent" ; exit 1; } +if [ ! -f "$LOG_FILE" ]; then + echo "Fichier absent" + exit 1 +fi +echo "Fichier trouvé" NB_ERREURS=$(grep -c "ERROR" "$LOG_FILE") NB_CRITIQUES=$(grep -c "CRITICAL" "$LOG_FILE") @@ -25,10 +28,10 @@ echo " CRITICAL : $NB_CRITIQUES" echo "===========================" # Vérifier le seuil d'erreurs -if [ $NB_CRITIQUES -gt 0 ]; then +if [ "$NB_CRITIQUES" -gt 0 ]; then echo "ALERTE CRITIQUE : $NB_CRITIQUES incident(s) critique(s) détecté(s) !" -elif [ $NB_ERREURS -gt $SEUIL_ERREURS ]; then +elif [ "$NB_ERREURS" -gt "$SEUIL_ERREURS" ]; then echo "ATTENTION : $NB_ERREURS erreurs détectées (seuil : $SEUIL_ERREURS)" else echo "OK : les logs sont dans les normes." -fi \ No newline at end of file +fi From 5be3a320e8e76f61c5531dabd8b5951a3a33b05a Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:53:15 +0200 Subject: [PATCH 24/51] fix syntax errors --- mon-projet/src/rapport.sh | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mon-projet/src/rapport.sh b/mon-projet/src/rapport.sh index 1576c29..283c807 100755 --- a/mon-projet/src/rapport.sh +++ b/mon-projet/src/rapport.sh @@ -21,9 +21,11 @@ compter_niveau() { ecrire_section() { local titre="$1" local contenu="$2" - echo "" >> "$RAPPORT" - echo "--- $titre ---" >> "$RAPPORT" - echo "$contenu" >> "$RAPPORT" + { + echo "" + echo "--- $titre ---" + echo "$contenu" + } >>"$RAPPORT" } # ── Script principal ─────────────────────────────────────────────── @@ -46,7 +48,7 @@ echo " ERROR : $ERROR" echo " CRITICAL : $CRITICAL" # Écrire le rapport dans un fichier -echo "RAPPORT D'ANALYSE — $(date '+%d/%m/%Y %H:%M')" > "$RAPPORT" +echo "RAPPORT D'ANALYSE — $(date '+%d/%m/%Y %H:%M')" >"$RAPPORT" ecrire_section "Compteurs" "INFO=$INFO WARNING=$WARNING ERROR=$ERROR CRITICAL=$CRITICAL" ecrire_section "Incidents critiques" "$(grep 'CRITICAL' "$LOG_FILE")" ecrire_section "Erreurs" "$(grep 'ERROR' "$LOG_FILE")" @@ -65,7 +67,7 @@ done # Boucle avec break et continue for i in $(seq 1 10); do - [ $i -eq 5 ] && continue # sauter le 5 - [ $i -eq 8 ] && break # arrêter au 8 - echo $i -done \ No newline at end of file + [ "$i" -eq 5 ] && continue # sauter le 5 + [ "$i" -eq 8 ] && break # arrêter au 8 + echo "$i" +done From 8aacb21f85279b000c7a8f521c19a8302eb4e264 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 14:57:26 +0200 Subject: [PATCH 25/51] fix syntax errors in setup.sh file --- setup.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/setup.sh b/setup.sh index 89d4968..e1f9582 100755 --- a/setup.sh +++ b/setup.sh @@ -3,8 +3,7 @@ set -e -export $(grep -v '^#' .env | xargs) - +export "$(grep -v '^#' .env | xargs)" VERT="\033[0;32m" ROUGE="\033[0;31m" @@ -71,9 +70,12 @@ if [ -f "$LOG" ]; then NB_ERR=$(grep -c "ERROR" "$LOG") NB_CRIT=$(grep -c "CRITICAL" "$LOG") ok "Logs analysés : $NB_ERR erreurs, $NB_CRIT critiques" - [ "$NB_CRIT" -gt 0 ] && echo "" && echo -e "${ROUGE}ATTENTION IL Y A $NB_CRIT ERREURS CRITIQUES${RESET}" || true - while [ "${i=0}" -le $NB_CRIT ]; do - echo "$(grep "CRITICAL" "$LOG" | sed -n "$i"p)" + if [ "$NB_CRIT" -gt 0 ]; then + echo "" + echo -e "${ROUGE}ATTENTION IL Y A $NB_CRIT ERREURS CRITIQUES${RESET}" + fi + while [ "${i=0}" -le "$NB_CRIT" ]; do + grep "CRITICAL" "$LOG" | sed -n "$i"p i=$((i + 1)) done else From 091dabe0c2ff1f5434e6a417d89371ef2cc4174a Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:02:31 +0200 Subject: [PATCH 26/51] update export --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index e1f9582..c1a39b5 100755 --- a/setup.sh +++ b/setup.sh @@ -3,7 +3,7 @@ set -e -export "$(grep -v '^#' .env | xargs)" +export $(grep -v '^#' .env | xargs) VERT="\033[0;32m" ROUGE="\033[0;31m" From 50c8d7cc9b195ae4d5b1f8098d546344c15b5870 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:06:23 +0200 Subject: [PATCH 27/51] Add argument --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c66ec5..533d089 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,7 +89,7 @@ jobs: } run_script "mon-projet/src/info.sh" - run_script "mon-projet/src/check-logs.sh" + run_script "mon-projet/src/check-logs.sh" "ressources/server.log" run_script "mon-projet/src/analyse-niveaux.sh" run_script "mon-projet/src/rapport.sh" run_script "mon-projet/src/couleurs.sh" From d2855a82b59b00bf38697f538e826cc8692f4064 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:08:14 +0200 Subject: [PATCH 28/51] fix export --- setup.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index c1a39b5..11e82d4 100755 --- a/setup.sh +++ b/setup.sh @@ -3,7 +3,9 @@ set -e -export $(grep -v '^#' .env | xargs) +set -a +source .env +set +a VERT="\033[0;32m" ROUGE="\033[0;31m" From 50002dd2ac7777cd5df0ce6f57de96a706f6daca Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:09:58 +0200 Subject: [PATCH 29/51] update .env export ( test ) --- setup.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/setup.sh b/setup.sh index 11e82d4..072b028 100755 --- a/setup.sh +++ b/setup.sh @@ -3,9 +3,10 @@ set -e -set -a -source .env -set +a +while IFS='=' read -r key value; do + [[ "$key" =~ ^#.*$ || -z "$key" ]] && continue + export "$key=$value" +done < .env VERT="\033[0;32m" ROUGE="\033[0;31m" From da51eb9c3e3375a605f1599cebe458ca3e353873 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:11:33 +0200 Subject: [PATCH 30/51] fix export --- setup.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/setup.sh b/setup.sh index 072b028..e1f9582 100755 --- a/setup.sh +++ b/setup.sh @@ -3,10 +3,7 @@ set -e -while IFS='=' read -r key value; do - [[ "$key" =~ ^#.*$ || -z "$key" ]] && continue - export "$key=$value" -done < .env +export "$(grep -v '^#' .env | xargs)" VERT="\033[0;32m" ROUGE="\033[0;31m" From bd7e58dd9b69a38368239014e2491c8e6464af5e Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:12:41 +0200 Subject: [PATCH 31/51] replace export --- setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index e1f9582..7f9db95 100755 --- a/setup.sh +++ b/setup.sh @@ -3,8 +3,6 @@ set -e -export "$(grep -v '^#' .env | xargs)" - VERT="\033[0;32m" ROUGE="\033[0;31m" CYAN="\033[0;36m" @@ -26,6 +24,8 @@ echo -e "${BOLD}${CYAN} SETUP NEXACLOUD — $(date '+%d/%m/%Y %H:%M')${RESET}" echo -e "${BOLD}${CYAN}============================================${RESET}" echo "" +export "$(grep -v '^#' .env | xargs)" + echo "Port configuré : $PORT" echo "" From 451ddc62dda88b10c87413d9451e5bf2e74988ba Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:49:31 +0200 Subject: [PATCH 32/51] Add ci to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 814fe40..3be33b1 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ terraform.rc # Ignore MacOS system files .DS_Store .env +.ci.yml # Optional: ignore graph output files generated by `terraform graph` # *.dot From 0e7d49b888c3ab70f3087314a6d84653dcc3dd9d Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:49:40 +0200 Subject: [PATCH 33/51] remove argument --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 533d089..0c66ec5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,7 +89,7 @@ jobs: } run_script "mon-projet/src/info.sh" - run_script "mon-projet/src/check-logs.sh" "ressources/server.log" + run_script "mon-projet/src/check-logs.sh" run_script "mon-projet/src/analyse-niveaux.sh" run_script "mon-projet/src/rapport.sh" run_script "mon-projet/src/couleurs.sh" From 87ec388dfad3483c15d82731017e84d99198ec27 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:50:42 +0200 Subject: [PATCH 34/51] Add default path --- mon-projet/src/check-logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mon-projet/src/check-logs.sh b/mon-projet/src/check-logs.sh index 61bba8c..9f0cd9d 100755 --- a/mon-projet/src/check-logs.sh +++ b/mon-projet/src/check-logs.sh @@ -1,7 +1,7 @@ #!/bin/bash # check-logs.sh — Vérifie l'état des logs et alerte si nécessaire -LOG_FILE="$1" +LOG_FILE="${1:-ressources/server.log}" SEUIL_ERREURS=3 # Vérifier que l'argument est bien fourni From 63c5321b8dd4334df3238f8207a8dd5c62beb5f1 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:52:01 +0200 Subject: [PATCH 35/51] fix condition --- mon-projet/src/check-logs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mon-projet/src/check-logs.sh b/mon-projet/src/check-logs.sh index 9f0cd9d..0e980d3 100755 --- a/mon-projet/src/check-logs.sh +++ b/mon-projet/src/check-logs.sh @@ -5,7 +5,7 @@ LOG_FILE="${1:-ressources/server.log}" SEUIL_ERREURS=3 # Vérifier que l'argument est bien fourni -if [ -z "$1" ]; then +if [ -z "$LOG_FILE" ]; then echo "Usage : $0 " exit 1 fi From 0a29e6c66f1b805403d2d64ebe4f5de4bb478a93 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 15:59:14 +0200 Subject: [PATCH 36/51] Add condition to export --- setup.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 7f9db95..2f9044a 100755 --- a/setup.sh +++ b/setup.sh @@ -24,7 +24,11 @@ echo -e "${BOLD}${CYAN} SETUP NEXACLOUD — $(date '+%d/%m/%Y %H:%M')${RESET}" echo -e "${BOLD}${CYAN}============================================${RESET}" echo "" -export "$(grep -v '^#' .env | xargs)" +if [ -f .env ]; then + export "$(grep -v '^#' .env | xargs)" +else + PORT=5001 +fi echo "Port configuré : $PORT" echo "" From 3e73829197d693aa915a4e479b5392f274087d5d Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:02:58 +0200 Subject: [PATCH 37/51] Add condition --- setup.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/setup.sh b/setup.sh index 2f9044a..7057de7 100755 --- a/setup.sh +++ b/setup.sh @@ -26,11 +26,9 @@ echo "" if [ -f .env ]; then export "$(grep -v '^#' .env | xargs)" -else - PORT=5001 fi -echo "Port configuré : $PORT" +echo "Port configuré : ${PORT:-3000}" echo "" # ── 1. Vérification des prérequis ───────────────────────────────────── From 7b8456b40ca0939017c39184a4093ea78fb47b1c Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:09:20 +0200 Subject: [PATCH 38/51] Add environment variables --- .env | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 0000000..ed9e48b --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +PORT="5001" +ENV="development" \ No newline at end of file From e9f7e04200201faf029ebd073d57d26e26a0baf4 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:09:33 +0200 Subject: [PATCH 39/51] remove .env from gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3be33b1..ddc85a4 100644 --- a/.gitignore +++ b/.gitignore @@ -38,7 +38,6 @@ terraform.rc # Ignore MacOS system files .DS_Store -.env .ci.yml # Optional: ignore graph output files generated by `terraform graph` From ce38f325be4d37176ab95d1aa828513e73e23298 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:10:03 +0200 Subject: [PATCH 40/51] fix export --- setup.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/setup.sh b/setup.sh index 7057de7..e1f9582 100755 --- a/setup.sh +++ b/setup.sh @@ -3,6 +3,8 @@ set -e +export "$(grep -v '^#' .env | xargs)" + VERT="\033[0;32m" ROUGE="\033[0;31m" CYAN="\033[0;36m" @@ -24,11 +26,7 @@ echo -e "${BOLD}${CYAN} SETUP NEXACLOUD — $(date '+%d/%m/%Y %H:%M')${RESET}" echo -e "${BOLD}${CYAN}============================================${RESET}" echo "" -if [ -f .env ]; then - export "$(grep -v '^#' .env | xargs)" -fi - -echo "Port configuré : ${PORT:-3000}" +echo "Port configuré : $PORT" echo "" # ── 1. Vérification des prérequis ───────────────────────────────────── From b5b715e5112824dfe3631f224279a20673045db3 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:13:21 +0200 Subject: [PATCH 41/51] fix while loop --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index e1f9582..0278c18 100755 --- a/setup.sh +++ b/setup.sh @@ -74,7 +74,7 @@ if [ -f "$LOG" ]; then echo "" echo -e "${ROUGE}ATTENTION IL Y A $NB_CRIT ERREURS CRITIQUES${RESET}" fi - while [ "${i=0}" -le "$NB_CRIT" ]; do + while [ "${i=1}" -le "$NB_CRIT" ]; do grep "CRITICAL" "$LOG" | sed -n "$i"p i=$((i + 1)) done From 3fe84c873e70a158ed0f3a69777e109b8ab722b9 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:29:55 +0200 Subject: [PATCH 42/51] Update file name --- .env => .env.example | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .env => .env.example (100%) diff --git a/.env b/.env.example similarity index 100% rename from .env rename to .env.example From 2fd902b7d1c1d919b029faa8774491403147d3f0 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:30:01 +0200 Subject: [PATCH 43/51] Update file name --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 0278c18..77952bb 100755 --- a/setup.sh +++ b/setup.sh @@ -3,7 +3,7 @@ set -e -export "$(grep -v '^#' .env | xargs)" +export "$(grep -v '^#' .env.example | xargs)" VERT="\033[0;32m" ROUGE="\033[0;31m" From 12294051ea91ef8164317a12bb1741ac72a932d5 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Thu, 28 May 2026 16:40:48 +0200 Subject: [PATCH 44/51] shellcheck disable=SC2046 --- setup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 77952bb..18707a0 100755 --- a/setup.sh +++ b/setup.sh @@ -3,7 +3,8 @@ set -e -export "$(grep -v '^#' .env.example | xargs)" +# shellcheck disable=SC2046 +export $(grep -v '^#' .env.example | xargs) VERT="\033[0;32m" ROUGE="\033[0;31m" From 44a24004582ce889cbbe73213f2902ddf4518589 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Fri, 29 May 2026 09:56:28 +0200 Subject: [PATCH 45/51] Add script to login to azure --- mon-projet/azure.sh | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 mon-projet/azure.sh diff --git a/mon-projet/azure.sh b/mon-projet/azure.sh new file mode 100755 index 0000000..1ffca22 --- /dev/null +++ b/mon-projet/azure.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# azure.sh — Azure CLI et automatisation cloud + +RESOURCE_GROUP="mcherfiRG" + +VERT="\033[0;32m" +ROUGE="\033[0;31m" +CYAN="\033[0;36m" +BOLD="\033[1m" +RESET="\033[0m" + +info() { echo -e "${CYAN}[INFO]${RESET} $1"; } +ok() { echo -e "${VERT}[OK]${RESET} $1"; } +warn() { echo -e "${JAUNE}[WARN]${RESET} $1"; } +err() { + echo -e "${ROUGE}[ERR]${RESET} $1" + exit 1 +} + +# Vérifier que Azure CLI est installé +if az --version &>/dev/null; then + ok "Azure CLI installé" +else + err "Azure CLI non trouvé. Veuillez l'installer pour continuer." +fi + +# Se connecter à Azure +if az login; then + ok "Connexion réussie à Azure" +else + err "Erreur de connexion" +fi + +# Vérifier le compte actif +info "Vérification du compte Azure actif..." +echo "" +if az account show &>/dev/null; then + ok "Compte Azure actif : $(az account show --query 'user.name' -o tsv)" +else + err "Aucun compte Azure actif. Veuillez vous connecter avec 'az login'." +fi + +echo "" + +# Vérifier que le groupe a été créé +if az group show --name "$RESOURCE_GROUP" --query "properties.provisioningState" -o tsv &>/dev/null; then + ok "Groupe de ressources '$RESOURCE_GROUP' trouvé" +else + err "Groupe de ressources '$RESOURCE_GROUP' non trouvé. Veuillez le créer avec 'az group create'." +fi From 610238a45a23ac8e1b839a17b32a6e6e86a6b4e2 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Fri, 29 May 2026 09:58:22 +0200 Subject: [PATCH 46/51] place file into src and rename file --- mon-projet/{azure.sh => src/azure-login.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mon-projet/{azure.sh => src/azure-login.sh} (100%) diff --git a/mon-projet/azure.sh b/mon-projet/src/azure-login.sh similarity index 100% rename from mon-projet/azure.sh rename to mon-projet/src/azure-login.sh From d7336b04d3a91865e15c16cdb1e3113dc9039cf7 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Fri, 29 May 2026 10:06:06 +0200 Subject: [PATCH 47/51] Add azure storage script --- mon-projet/src/azure-storage.sh | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 mon-projet/src/azure-storage.sh diff --git a/mon-projet/src/azure-storage.sh b/mon-projet/src/azure-storage.sh new file mode 100755 index 0000000..c6da815 --- /dev/null +++ b/mon-projet/src/azure-storage.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# azure-storage.sh — Crée un compte de stockage et uploade server.log + +set -e + +RESOURCE_GROUP="mcherfiRG" +LOCATION="francecentral" +STORAGE_ACCOUNT="stnexacloud$RANDOM" +CONTAINER="logs" +FICHIER_LOCAL="ressources/server.log" +FICHIER_BLOB="server.log" + +echo "=== Création du compte de stockage Azure ===" + +# Créer le compte de stockage +az storage account create \ + --name "$STORAGE_ACCOUNT" \ + --resource-group "$RESOURCE_GROUP" \ + --location "$LOCATION" \ + --sku Standard_LRS \ + --kind StorageV2 \ + --output none + +echo "Compte créé : $STORAGE_ACCOUNT" + +# Récupérer la clé de connexion +CLE=$(az storage account keys list \ + --resource-group "$RESOURCE_GROUP" \ + --account-name "$STORAGE_ACCOUNT" \ + --query "[0].value" \ + --output tsv) + +# Créer un conteneur +az storage container create \ + --name "$CONTAINER" \ + --account-name "$STORAGE_ACCOUNT" \ + --account-key "$CLE" \ + --output none + +echo "Conteneur créé : $CONTAINER" + +# Uploader server.log +az storage blob upload \ + --container-name "$CONTAINER" \ + --file "$FICHIER_LOCAL" \ + --name "$FICHIER_BLOB" \ + --account-name "$STORAGE_ACCOUNT" \ + --account-key "$CLE" \ + --output none + +echo "Fichier uploadé : $FICHIER_BLOB" + +# Lister les blobs du conteneur +echo "" +echo "=== Contenu du conteneur ===" +az storage blob list \ + --container-name "$CONTAINER" \ + --account-name "$STORAGE_ACCOUNT" \ + --account-key "$CLE" \ + --output table From 761887f1e38ce5666d5a5234b1fad73e69a5c39c Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Fri, 29 May 2026 10:20:22 +0200 Subject: [PATCH 48/51] Add script to create keyvault --- mon-projet/src/azure-keyvault.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 mon-projet/src/azure-keyvault.sh diff --git a/mon-projet/src/azure-keyvault.sh b/mon-projet/src/azure-keyvault.sh new file mode 100755 index 0000000..3773131 --- /dev/null +++ b/mon-projet/src/azure-keyvault.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# azure-keyvault.sh — Crée un Key Vault et ajoute un secret + +KEYVAULT_NAME="kv-nexacloud-$RANDOM" +RESOURCE_GROUP="mcherfiRG" +LOCATION="francecentral" + +# Créer le Key Vault +az keyvault create \ + --name "$KEYVAULT_NAME" \ + --resource-group "$RESOURCE_GROUP" \ + --location "$LOCATION" + +# Ajouter un secret +az keyvault secret set \ + --vault-name "$KEYVAULT_NAME" \ + --name "db-password" \ + --value "MonMotDePasse123!" + +# Récupérer un secret dans un script +SECRET=$(az keyvault secret show \ + --vault-name "$KEYVAULT_NAME" \ + --name "db-password" \ + --query "value" \ + --output tsv) + +echo "Secret récupéré (longueur : ${#SECRET} caractères)" + +# Lister tous les secrets +az keyvault secret list \ + --vault-name "$KEYVAULT_NAME" \ + --output table From ad98c312bd40938f065f84ee7be4074cf88997d3 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Fri, 29 May 2026 12:06:08 +0200 Subject: [PATCH 49/51] Add script to create vm --- mon-projet/src/azure-vm.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 mon-projet/src/azure-vm.sh diff --git a/mon-projet/src/azure-vm.sh b/mon-projet/src/azure-vm.sh new file mode 100755 index 0000000..a24429c --- /dev/null +++ b/mon-projet/src/azure-vm.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# azure-vm.sh — Crée une machine virtuelle et se connecte en SSH + +RESOURCE_GROUP="mcherfiRG" + +VM_NAME="vm-nexacloud-tp" +VM_IMAGE="Ubuntu2204" +VM_SIZE="Standard_D2s_v3" + +# Créer une VM avec clé SSH générée automatiquement +az vm create \ + --resource-group "$RESOURCE_GROUP" \ + --name "$VM_NAME" \ + --image "$VM_IMAGE" \ + --size "$VM_SIZE" \ + --admin-username "malikcherfi" \ + --ssh-key-values ~/.ssh/id_ed25519.pub \ + --output json + +# Récupérer l'IP publique +IP=$(az vm show \ + --resource-group "$RESOURCE_GROUP" \ + --name "$VM_NAME" \ + --show-details \ + --query "publicIps" \ + --output tsv) + +echo "IP de la VM : $IP" + +# Se connecter en SSH +ssh -i ~/.ssh/id_ed25519 malikcherfi@$IP From 87165f3cc6169b2b6c82978c9e003bb1ec014f29 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Wed, 3 Jun 2026 21:23:41 +0200 Subject: [PATCH 50/51] fix: remove unused variable --- mon-projet/src/azure-login.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/mon-projet/src/azure-login.sh b/mon-projet/src/azure-login.sh index 1ffca22..ad36c54 100755 --- a/mon-projet/src/azure-login.sh +++ b/mon-projet/src/azure-login.sh @@ -6,7 +6,6 @@ RESOURCE_GROUP="mcherfiRG" VERT="\033[0;32m" ROUGE="\033[0;31m" CYAN="\033[0;36m" -BOLD="\033[1m" RESET="\033[0m" info() { echo -e "${CYAN}[INFO]${RESET} $1"; } From c2dc936d3168262c47eccde61dbc1ea06e0cb1e3 Mon Sep 17 00:00:00 2001 From: malikcherfi Date: Wed, 3 Jun 2026 21:25:06 +0200 Subject: [PATCH 51/51] fix: Add double quote for $IP variable --- mon-projet/src/azure-vm.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mon-projet/src/azure-vm.sh b/mon-projet/src/azure-vm.sh index a24429c..c603aac 100755 --- a/mon-projet/src/azure-vm.sh +++ b/mon-projet/src/azure-vm.sh @@ -28,4 +28,4 @@ IP=$(az vm show \ echo "IP de la VM : $IP" # Se connecter en SSH -ssh -i ~/.ssh/id_ed25519 malikcherfi@$IP +ssh -i ~/.ssh/id_ed25519 malikcherfi@"$IP"