« Feuille classe » : différence entre les versions

De Travail-ivan
Aucun résumé des modifications
Aucun résumé des modifications
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
# Script de redimensionnement automatique de partition
# À utiliser avec précaution - Faire une sauvegarde avant utilisation


# Vérification des privilèges root
# Vérification des privilèges root
Ligne 11 : Ligne 8 :
fi
fi


# Fonction pour vérifier les outils nécessaires
# Installation des outils nécessaires
check_prerequisites() {
apt-get update
    local prerequisites=("parted" "e2fsprogs")
apt-get install -y parted fdisk
    local missing_tools=()
 
    for tool in "${prerequisites[@]}"; do
        if ! command -v $tool &> /dev/null; then
            missing_tools+=($tool)
        fi
    done
 
    if [ ${#missing_tools[@]} -ne 0 ]; then
        echo "Installation des outils manquants : ${missing_tools[*]}"
        apt-get update
        apt-get install -y "${missing_tools[@]}"
    fi
}
 
# Fonction pour vérifier l'espace disponible
check_available_space() {
    local disk=$1
    local free_space=$(parted "$disk" unit GB print free | grep "Free Space" | tail -n1 | awk '{print $3}' | sed 's/GB//')
   
    if [[ -z "$free_space" || "$free_space" == "0.00" ]]; then
        echo "Pas d'espace libre disponible sur $disk"
        exit 1
    fi
   
    echo "Espace libre disponible : ${free_space}GB"
    return 0
}


# Fonction pour vérifier le système de fichiers
# Afficher l'état actuel
check_filesystem() {
echo "État actuel du disque :"
    local partition=$1
fdisk -l /dev/sda
    echo "Vérification du système de fichiers sur $partition"
echo "-------------------"
    e2fsck -f $partition
df -h /dev/sda2
    if [ $? -gt 1 ]; then
echo "-------------------"
        echo "Erreur lors de la vérification du système de fichiers"
        exit 1
    fi
}


# Fonction principale de redimensionnement
# Calculer la taille maximale disponible (juste avant la partition swap)
resize_partition() {
SWAP_START=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')
    local disk="/dev/sda"
echo "Début de la partition SWAP : $SWAP_START"
    local partition="/dev/sda2"
    local partition_number="2"


    # Vérification du disque et de la partition
# Redimensionner avec fdisk
    if [ ! -b "$disk" ] || [ ! -b "$partition" ]; then
(
        echo "Disque ou partition non trouvé"
echo "d"  # Supprimer partition
        exit 1
echo "2" # Partition numéro 2
    fi
echo "n" # Nouvelle partition
echo "p"  # Type primaire
echo "2" # Partition numéro 2
echo    # Premier secteur (par défaut)
echo "$((SWAP_START - 1))"  # Dernier secteur (juste avant le swap)
echo "N"  # Ne pas supprimer la signature
echo "w"  # Écrire les changements
) | fdisk /dev/sda


    # Vérification des prérequis
# Recharger la table des partitions
    check_prerequisites
partprobe /dev/sda


    # Vérification de l'espace disponible
# Redimensionner le système de fichiers
    check_available_space "$disk"
resize2fs /dev/sda2


    # Vérification du système de fichiers
# Afficher le résultat
    check_filesystem "$partition"
echo "Nouvel état du disque :"
 
df -h /dev/sda2
    # Sauvegarde de la table de partitions
    echo "Sauvegarde de la table de partitions..."
    sfdisk -d "$disk" > "/root/partition_table_backup_$(date +%Y%m%d_%H%M%S).sf"
 
    # Redimensionnement de la partition
    echo "Redimensionnement de la partition..."
    parted "$disk" resizepart "$partition_number" 100%
 
    # Redimensionnement du système de fichiers
    echo "Redimensionnement du système de fichiers..."
    resize2fs "$partition"
 
    # Vérification finale
    df -h "$partition"
}
 
# Message d'avertissement
echo "ATTENTION: Ce script va redimensionner la partition système."
echo "Assurez-vous d'avoir fait une sauvegarde avant de continuer."
read -p "Voulez-vous continuer ? (o/N) " response
 
if [[ "$response" =~ ^[oO]$ ]]; then
    resize_partition
else
    echo "Opération annulée"
    exit 0
fi
</syntaxhighlight>
</syntaxhighlight>

Dernière version du 28 novembre 2024 à 11:28

#!/bin/bash

# Vérification des privilèges root
if [ "$EUID" -ne 0 ]; then
    echo "Ce script doit être exécuté en tant que root"
    exit 1
fi

# Installation des outils nécessaires
apt-get update
apt-get install -y parted fdisk

# Afficher l'état actuel
echo "État actuel du disque :"
fdisk -l /dev/sda
echo "-------------------"
df -h /dev/sda2
echo "-------------------"

# Calculer la taille maximale disponible (juste avant la partition swap)
SWAP_START=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')
echo "Début de la partition SWAP : $SWAP_START"

# Redimensionner avec fdisk
(
echo "d"  # Supprimer partition
echo "2"  # Partition numéro 2
echo "n"  # Nouvelle partition
echo "p"  # Type primaire
echo "2"  # Partition numéro 2
echo     # Premier secteur (par défaut)
echo "$((SWAP_START - 1))"  # Dernier secteur (juste avant le swap)
echo "N"  # Ne pas supprimer la signature
echo "w"  # Écrire les changements
) | fdisk /dev/sda

# Recharger la table des partitions
partprobe /dev/sda

# Redimensionner le système de fichiers
resize2fs /dev/sda2

# Afficher le résultat
echo "Nouvel état du disque :"
df -h /dev/sda2