11#! /usr/bin/env bash
22# ==============================================================================
3- # menu.sh â Lanceur interactif des scripts OverStyleFR
3+ # menu.sh — Lanceur interactif des scripts OverStyleFR
44#
55# USAGE :
66# sudo ./menu.sh
7- #
8- # CARACTÃRISTIQUES :
9- # - Menu en boucle (1..9)
10- # - Vérifie root, relance via sudo si nécessaire
11- # - Couleurs avec fallback si tput indisponible
12- # - Télécharge chaque script dans /tmp avec mktemp, exécute, affiche le statut
13- # - Nettoyage auto des fichiers temporaires
147# ==============================================================================
158
16- # Pas de "set -e" pour ne pas quitter le menu sur une simple erreur de sous-commande
179set -uo pipefail
1810
1911# ------------------------------- Couleurs -------------------------------------
2517 GREEN=" " ; RED=" " ; BLUE=" " ; VIOLET=" " ; YELLOW=" " ; BOLD=" " ; RESET=" "
2618fi
2719
28- # ------------------------------ Vérif root ------------------------------------
20+ # ------------------------------ Vérif root ------------------------------------
2921if [[ ${EUID:- $UID } -ne 0 ]]; then
30- echo -e " ${RED}${BOLD} Ce script doit être exécuté en tant que root.${RESET} "
22+ echo -e " ${RED}${BOLD} Ce script doit être exécuté en tant que root.${RESET} "
3123 exec sudo -E bash " $0 " " $@ "
3224fi
3325
@@ -48,43 +40,39 @@ download_to_tmp() {
4840 # $1=url $2=prefix (nom lisible)
4941 local url=" $1 " prefix=" ${2:- script} "
5042 local tmp
51- tmp=" $( mktemp -p /tmp " ${prefix} .XXXXXX" ) " || { echo -e " ${RED}${BOLD} mktemp a échoué${RESET} " ; return 98; }
52-
53- # Nettoyage automatique à la sortie de la fonction:
54- trap ' rm -f "$tmp" 2>/dev/null || true' RETURN
43+ tmp=" $( mktemp -p /tmp " ${prefix} .XXXXXX" ) " || { echo -e " ${RED}${BOLD} mktemp a échoué${RESET} " ; return 98; }
5544
5645 if command -v curl > /dev/null 2>&1 ; then
5746 if ! curl -fsSL --retry 3 --retry-delay 1 " $url " -o " $tmp " ; then
58- echo -e " ${RED}${BOLD} Téléchargement échoué (curl)${RESET} " ; return 90
47+ echo -e " ${RED}${BOLD} Téléchargement échoué (curl)${RESET} " ; rm -f " $tmp " ; return 90
5948 fi
6049 elif command -v wget > /dev/null 2>&1 ; then
6150 if ! wget -q " $url " -O " $tmp " ; then
62- echo -e " ${RED}${BOLD} Téléchargement échoué (wget)${RESET} " ; return 90
51+ echo -e " ${RED}${BOLD} Téléchargement échoué (wget)${RESET} " ; rm -f " $tmp " ; return 90
6352 fi
6453 else
65- echo -e " ${RED}${BOLD} Ni curl ni wget disponible pour télécharger ${RESET} " ; return 91
54+ echo -e " ${RED}${BOLD} Ni curl ni wget disponible pour télécharger ${RESET} " ; rm -f " $tmp " ; return 91
6655 fi
6756
6857 chmod +x " $tmp "
69- echo " $tmp " # retourne le chemin
58+ printf " %s " " $tmp " # retourne le chemin
7059}
7160
7261run_remote () {
73- # $1=url $2=nom_affiché
74- local url=" $1 " label=" ${2:- script} "
75- echo -e " ${YELLOW}${BOLD} Téléchargement de ${label} â¦${RESET} "
76- local tmp rc
62+ # $1=url $2=nom_affiché
63+ local url=" $1 " label=" ${2:- script} " tmp rc
64+ echo -e " ${YELLOW}${BOLD} Téléchargement de ${label} …${RESET} "
7765 if ! tmp=" $( download_to_tmp " $url " " $label " ) " ; then
78- echo -e " ${RED}${BOLD} Ãchec de préparation pour ${label}${RESET} "
66+ echo -e " ${RED}${BOLD} Échec de préparation pour ${label}${RESET} "
7967 return 90
8068 fi
81- echo -e " ${YELLOW}${BOLD} Exécution de ${label} ⦠${RESET} "
69+ echo -e " ${YELLOW}${BOLD} Exécution de ${label} … ${RESET} "
8270 bash " $tmp " ; rc=$?
71+ rm -f " $tmp " 2> /dev/null || true
8372 if [[ $rc -eq 0 ]]; then
84- echo -e " ${GREEN}${BOLD} â ${label} terminé avec succès ${RESET} "
73+ echo -e " ${GREEN}${BOLD} ✔ ${label} terminé avec succès ${RESET} "
8574 else
86- echo -e " ${RED}${BOLD} â ${label} a échoué (rc=${rc} )${RESET} "
87- # indice utile pour new.sh
75+ echo -e " ${RED}${BOLD} ✘ ${label} a échoué (rc=${rc} )${RESET} "
8876 ls -1 /var/log/new-basics-* .log 2> /dev/null | tail -n 1 | sed " s/^/Dernier log: /"
8977 fi
9078 return $rc
@@ -104,19 +92,19 @@ draw_menu() {
10492 echo " +-------------+"
10593 echo " | ${GREEN}${BOLD} Script${RESET}${BOLD} :${RESET} |"
10694 echo " +-------------+-------------+----------------+"
107- echo " | 3. Exécuter 'new.sh' |"
95+ echo " | 3. Exécuter 'new.sh' |"
10896 echo " | |"
109- echo " | 4. Exécuter 'speedtest.sh' |"
97+ echo " | 4. Exécuter 'speedtest.sh' |"
11098 echo " | |"
111- echo " | 5. Exécuter 'fastfetch.sh' |"
99+ echo " | 5. Exécuter 'fastfetch.sh' |"
112100 echo " | |"
113- echo " | 6. Exécuter 'pterodactyl-panel-reinstaller'|"
101+ echo " | 6. Exécuter 'pterodactyl-panel-reinstaller'|"
114102 echo " +--------------------------------------------+"
115- echo " | 7. ${BLUE}${BOLD} Exécuter le Pterodactyl Menu${RESET} |"
116- echo " | â ${YELLOW}${BOLD} OverStyleFR/Pterodactyl-Installer-Menu${RESET} |"
103+ echo " | 7. ${BLUE}${BOLD} Exécuter le Pterodactyl Menu${RESET} |"
104+ echo " | └ ${YELLOW}${BOLD} OverStyleFR/Pterodactyl-Installer-Menu${RESET} |"
117105 echo " +--------------------------------------------+"
118106 echo " | 8. ${BOLD}${VIOLET} M${GREEN} e${YELLOW} n${BLUE} u${RESET}${BOLD} SSH ${RESET} |"
119- echo " | â ${VIOLET}${BOLD} OverStyleFR/AutoScriptBash${RESET} |"
107+ echo " | └ ${VIOLET}${BOLD} OverStyleFR/AutoScriptBash${RESET} |"
120108 echo " +-------------+------------+-----------------+"
121109 echo " | ${RED}${BOLD} 9. Quitter${RESET} |"
122110 echo " +------------+"
@@ -128,51 +116,15 @@ while true; do
128116 draw_menu
129117 read -rp " Choisissez une option (1-9) : " choix
130118 case " ${choix:- } " in
131- 1)
132- echo " Installation de Docker."
133- run_remote " $DOCKER_URL " " dockerinstall.sh"
134- pause
135- ;;
136- 2)
137- echo " Installation de Yarn."
138- run_remote " $YARN_URL " " yarninstall.sh"
139- pause
140- ;;
141- 3)
142- echo " Exécution du script 'new.sh'."
143- run_remote " $NEW_URL " " new.sh"
144- pause
145- ;;
146- 4)
147- echo " Exécution du script 'speedtest.sh'."
148- run_remote " $SPEED_URL " " speedtest.sh"
149- pause
150- ;;
151- 5)
152- echo " Exécution du script 'fastfetch-install.sh'."
153- run_remote " $FASTFETCH_URL " " fastfetch-install.sh"
154- pause
155- ;;
156- 6)
157- echo " Exécution du script 'pterodactyl-panel-reinstaller'."
158- run_remote " $PANEL_REINSTALL_URL " " pterodactylpanelreinstall.sh"
159- pause
160- ;;
161- 7)
162- echo -e " ${BLUE}${BOLD} Exécuter le Pterodactyl Menu${RESET} "
163- run_remote " $PTERO_MENU_URL " " PterodactylMenu.sh"
164- pause
165- ;;
166- 8)
167- echo -e " ${BOLD}${VIOLET} Menu SSH${RESET} "
168- run_remote " $SSH_MENU_URL " " menu_id.sh"
169- pause
170- ;;
171- 9)
172- echo " Au revoir !" ; exit 0 ;;
173- * )
174- echo -e " ${RED} Choix non valide. Veuillez entrer un numéro entre 1 et 9.${RESET} "
175- sleep 1
176- ;;
119+ 1) echo " Installation de Docker." ; run_remote " $DOCKER_URL " " dockerinstall.sh" ; pause ;;
120+ 2) echo " Installation de Yarn." ; run_remote " $YARN_URL " " yarninstall.sh" ; pause ;;
121+ 3) echo " Exécution du script 'new.sh'." ; run_remote " $NEW_URL " " new.sh" ; pause ;;
122+ 4) echo " Exécution du script 'speedtest.sh'." ; run_remote " $SPEED_URL " " speedtest.sh" ; pause ;;
123+ 5) echo " Exécution du script 'fastfetch-install.sh'." ; run_remote " $FASTFETCH_URL " " fastfetch-install.sh" ; pause ;;
124+ 6) echo " Exécution du script 'pterodactyl-panel-reinstaller'." ; run_remote " $PANEL_REINSTALL_URL " " pterodactylpanelreinstall.sh" ; pause ;;
125+ 7) echo -e " ${BLUE}${BOLD} Exécuter le Pterodactyl Menu${RESET} " ; run_remote " $PTERO_MENU_URL " " PterodactylMenu.sh" ; pause ;;
126+ 8) echo -e " ${BOLD}${VIOLET} Menu SSH${RESET} " ; run_remote " $SSH_MENU_URL " " menu_id.sh" ; pause ;;
127+ 9) echo " Au revoir !" ; exit 0 ;;
128+ * ) echo -e " ${RED} Choix non valide. Veuillez entrer un numéro entre 1 et 9.${RESET} " ; sleep 1 ;;
177129 esac
178130done
0 commit comments