Feuille classe

De Travail-ivan
#!/bin/bash

# Script pour étendre uniquement la partition système sda1
# À exécuter en tant que root

# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Fonction pour afficher les messages
print_message() {
    echo -e "${2}${1}${NC}"
}

# Vérification des privilèges root
if [ "$(id -u)" != "0" ]; then
    print_message "Ce script doit être exécuté en tant que root" "$RED"
    exit 1
fi

# Affichage de l'état actuel
print_message "\nÉtat actuel du système:" "$GREEN"
df -h /
print_message "\nTable de partitions actuelle:" "$GREEN"
fdisk -l /dev/sda

# Demande de confirmation
print_message "\nATTENTION: Assurez-vous d'avoir:" "$RED"
echo "1. Augmenté la taille du disque dans VMware"
echo "2. Créé un snapshot de la VM"
echo "3. Sauvegardé vos données importantes"
read -p "Voulez-vous continuer? (o/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Oo]$ ]]; then
    print_message "Opération annulée" "$YELLOW"
    exit 1
fi

# Rescan du disque pour détecter les changements de taille
print_message "\nRescan du disque..." "$YELLOW"
echo 1 > /sys/class/block/sda/device/rescan

# Récupération de l'ancien point de début de sda2
START_SDA2=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')

# Utilisation de fdisk pour redimensionner sda1
print_message "Modification de la partition sda1..." "$YELLOW"
(
echo d    # Supprimer une partition
echo 1    # Partition numéro 1
echo n    # Nouvelle partition
echo p    # Partition primaire
echo 1    # Numéro 1
echo 2048 # Premier secteur (par défaut)
echo $START_SDA2    # Dernier secteur (juste avant sda2)
echo w    # Écrire les changements
) | fdisk /dev/sda

# Mise à jour de la table de partitions
print_message "Mise à jour de la table de partitions..." "$YELLOW"
partprobe /dev/sda

# Extension du système de fichiers
print_message "Extension du système de fichiers..." "$YELLOW"
resize2fs /dev/sda2

# Vérification finale
print_message "\nNouvelle configuration:" "$GREEN"
df -h /
fdisk -l /dev/sda

print_message "\nOpération terminée avec succès!" "$GREEN"