Actualiser convert-static-to-dhcp.sh
This commit is contained in:
parent
cd66268b43
commit
e72ebe135f
@ -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 <CTID1> <CTID2-CTID3> ...\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"
|
Loading…
x
Reference in New Issue
Block a user