From d6ed0b1cbd51c2ce9f68b1f60fd7b69d963f9b29 Mon Sep 17 00:00:00 2001 From: maxime Date: Wed, 25 Mar 2026 00:04:20 +0100 Subject: [PATCH] 1.0 --- main.sh | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100755 main.sh diff --git a/main.sh b/main.sh new file mode 100755 index 0000000..1c28ef6 --- /dev/null +++ b/main.sh @@ -0,0 +1,158 @@ +#!/bin/bash + +cat << 'EOF' + + _______ ________ ___ ___ _______ ________ +|\ ___ \ |\ __ \|\ \|\ \|\ ___ \ |\ ____\ +\ \ __/|\ \ \|\ \ \ \\\ \ \ __/|\ \ \___| + \ \ \_|/_\ \ ____\ \ __ \ \ \_|/_\ \ \ + \ \ \_|\ \ \ \___|\ \ \ \ \ \ \_|\ \ \ \____ + \ \_______\ \__\ \ \__\ \__\ \_______\ \_______\ + \|_______|\|__| \|__|\|__|\|_______|\|_______| + + + +EOF + + + +# ============================================== +# Script de configuration automatique Raspberry Pi - Projet IoT +# ============================================== + +set -euo pipefail + +SEPARATOR="==============================================" + +print_step() { + echo "" + echo "$SEPARATOR" + echo " $1" + echo "$SEPARATOR" +} + +# Vérification des droits sudo +if [ "$EUID" -ne 0 ]; then + echo "⚠ Ce script doit être exécuté avec sudo" + echo " Utilisation : sudo ./main.sh" + exit 1 +fi + +print_step "🚀 Lancement du programme de configuration IoT" +sleep 1 + +# ---------------------------- +# 1. Mise à jour du système +# ---------------------------- +print_step "🔄 Mise à jour du système (apt update & upgrade)" +if ! apt update && apt upgrade -y; then + echo "❌ Erreur lors de la mise à jour du système" + exit 1 +fi +echo "✅ Système mis à jour" +sleep 1 + +# ---------------------------- +# 2. Installation de Python +# ---------------------------- +print_step "🐍 Vérification / Installation de Python3" +if ! apt install python3 python3-pip python3-venv -y; then + echo "❌ Erreur lors de l'installation de Python3" + exit 1 +fi +PYTHON_VERSION=$(python3 --version 2>&1) +echo "✅ $PYTHON_VERSION installé" +sleep 1 + +# ---------------------------- +# 3. Recherche des venvs existants +# ---------------------------- +print_step "🔍 Recherche des environnements virtuels (venv) existants..." + +SEARCH_DIRS=("$(pwd)") +VENV_LIST=() + +for dir in "${SEARCH_DIRS[@]}"; do + if [ -d "$dir" ]; then + # Un venv valide contient bin/activate et bin/python + while IFS= read -r -d '' activate_path; do + venv_dir=$(dirname "$(dirname "$activate_path")") + if [ -f "$venv_dir/bin/python" ]; then + VENV_LIST+=("$venv_dir") + fi + done < <(find "$dir" -name "activate" -path "*/bin/activate" 2>/dev/null -print0) + fi +done + +echo "" +if [ ${#VENV_LIST[@]} -eq 0 ]; then + echo "⚠ Aucun environnement virtuel trouvé dans : $(pwd)" +else + echo "✅ ${#VENV_LIST[@]} environnement(s) virtuel(s) trouvé(s) :" + for i in "${!VENV_LIST[@]}"; do + venv="${VENV_LIST[$i]}" + python_ver=$("$venv/bin/python" --version 2>&1) + echo "" + echo " [$((i+1))] Chemin : $venv" + echo " Python : $python_ver" + echo " ▶ Activer : source $venv/bin/activate" + done + + # On retient le premier venv trouvé et on écrit son chemin + SELECTED_VENV="${VENV_LIST[0]}" + echo "$SELECTED_VENV" > ./.venv_path + echo "" + echo "📝 Venv sélectionné et enregistré : $SELECTED_VENV" +fi + +# ---------------------------- +# 4. Créer un nouveau venv ? +# ---------------------------- +print_step "➕ Créer un nouvel environnement virtuel ?" +echo "Voulez-vous créer un nouveau venv ? (o/n)" +read -r CREATE_VENV + +if [[ "$CREATE_VENV" =~ ^[oO]$ ]]; then + VENV_PATH="$SEARCH_DIRS/venv" + if python3 -m venv $SEARCH_DIRS/venv; then + echo "" + echo "✅ Venv créé avec succès !" + echo " Chemin : $VENV_PATH" + echo " ▶ Activer : source $VENV_PATH/bin/activate" + + + echo "$VENV_PATH" > ./.venv_path + echo "📝 Chemin enregistré dans .venv_path" + + # Mise à jour de pip dans le venv + "$VENV_PATH/bin/pip" install --upgrade pip + + # Installation des dépendances si requirements.txt présent + if [ -f "./requirements.txt" ]; then + echo "📦 Installation des dépendances depuis requirements.txt..." + "$VENV_PATH/bin/pip" install -r ./requirements.txt + echo "✅ Dépendances installées" + else + echo "⚠ Aucun requirements.txt trouvé, installation des dépendances ignorée" + fi + else + echo "❌ Erreur lors de la création du venv à : $VENV_PATH" + exit 1 + + fi +else + echo "⏭ Création ignorée" +fi + +# ---------------------------- +# Fin +# ---------------------------- +print_step "🎉 Configuration terminée" +echo "" +if [ -f "./.venv_path" ]; then + echo "ℹ️ Venv configuré : $(cat ./.venv_path)" + echo " Pour l'activer manuellement : source $(cat ./.venv_path)/bin/activate" +else + echo "⚠ Aucun venv enregistré — relancez le script et créez un venv" +fi +echo ""