diff --git a/convert-static-to-dhcp.sh b/convert-static-to-dhcp.sh index e69de29..22e1fac 100644 --- a/convert-static-to-dhcp.sh +++ b/convert-static-to-dhcp.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Script pour configurer l'interface réseau en DHCP pour des conteneurs LXC sur plusieurs PVE + +# Efface l'écran au début +clear + +TITLE="🖥️ CONFIGURATION DES CONTENEURS LXC" +HEADER_WIDTH=$(tput cols) + +# Affiche le titre centré +printf "\033[1;36m" # Couleur cyan +printf "%*s\n" $((($HEADER_WIDTH + ${#TITLE}) / 2)) "$TITLE" +printf "\033[0m" # Réinitialise la couleur +sleep 2 + +# Vérifie si au moins un CTID ou une plage est fournie +if [ $# -lt 1 ]; then + echo -e "\033[1;31m❌ Usage : $0 ...\033[0m" + exit 1 +fi + +# Crée une liste vide pour stocker tous les CTID +CTID_LIST=() + +# Parcours les arguments pour identifier les CTID et les plages +for arg in "$@"; do + if [[ "$arg" =~ ^[0-9]+$ ]]; then + # CTID simple + CTID_LIST+=("$arg") + elif [[ "$arg" =~ ^([0-9]+)-([0-9]+)$ ]]; then + # Plage de CTID + START=${BASH_REMATCH[1]} + END=${BASH_REMATCH[2]} + if [ "$START" -gt "$END" ]; then + echo -e "\033[1;31m❌ Plage invalide : $START-$END\033[0m" + exit 1 + fi + for ((ctid=START; ctid<=END; ctid++)); do + CTID_LIST+=("$ctid") + done + else + echo -e "\033[1;31m❌ Argument invalide : $arg\033[0m" + exit 1 + fi +done + +TOTAL_CONTAINERS=${#CTID_LIST[@]} +CURRENT_INDEX=0 +START_TIME=$(date +%s) + +# Configuration des conteneurs +for ctid in "${CTID_LIST[@]}"; do + CURRENT_INDEX=$((CURRENT_INDEX + 1)) + PERCENT=$((CURRENT_INDEX * 100 / TOTAL_CONTAINERS)) + clear + # Affiche le titre centré + TITLE_CT="🖥️ CONFIGURATION DU CONTENEUR $ctid ($PERCENT%)" + BORDER=$(printf '━%.0s' $(seq 1 $HEADER_WIDTH)) + SPACER=$(printf ' %.0s' $(seq 1 $((($HEADER_WIDTH - ${#TITLE_CT}) / 2)))) + echo -e "\033[1;36m$BORDER\033[0m" + echo -e "\033[1;36m$SPACER$TITLE_CT\033[0m" + echo -e "\033[1;36m$BORDER\033[0m" + echo -e "\n\n" + + # Démarre le conteneur si éteint + if ! lxc-info -n "$ctid" | grep -q "RUNNING"; then + echo -e "\033[1;33m⚠️ $ctid est éteint. Démarrage en cours...\033[0m" + lxc-start -n "$ctid" &> /dev/null + sleep 2 + fi + + echo -e "\033[1;32m✅ $ctid est maintenant en cours d'exécution.\033[0m" + + # Met à jour la configuration réseau avec pct + pct set "$ctid" -net0 name=eth0,bridge=vmbr0,ip=dhcp &> /dev/null + echo -e "\033[1;34m🔄 Configuration réseau mise à jour pour $ctid avec pct.\033[0m" + + # Redémarre l'interface réseau sans afficher les logs + lxc-attach -n "$ctid" -- ifdown eth0 &> /dev/null || true + lxc-attach -n "$ctid" -- ifup eth0 &> /dev/null || true + echo -e "\033[1;32m🚀 DHCP configuré et interface eth0 redémarrée pour $ctid.\033[0m" + sleep 2 + +done + +clear + +# Affiche le message final sans bordures +END_TIME=$(date +%s) +TOTAL_TIME=$((END_TIME - START_TIME)) + +MINUTES=$((TOTAL_TIME / 60)) +SECONDS=$((TOTAL_TIME % 60)) + +printf "\033[1;32m🎉 Configuration terminée en ${MINUTES}m ${SECONDS}s. Félicitations ! Tous les conteneurs ont été configurés avec succès !\033[0m\n"