Feuille classe
De Travail-ivan
#!/bin/bash
# Script de redimensionnement automatique de partition
# À utiliser avec précaution - Faire une sauvegarde avant utilisation
# 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
# Fonction pour vérifier les outils nécessaires
check_prerequisites() {
local prerequisites=("parted" "e2fsprogs")
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
check_filesystem() {
local partition=$1
echo "Vérification du système de fichiers sur $partition"
e2fsck -f $partition
if [ $? -gt 1 ]; then
echo "Erreur lors de la vérification du système de fichiers"
exit 1
fi
}
# Fonction principale de redimensionnement
resize_partition() {
local disk="/dev/sda"
local partition="/dev/sda2"
local partition_number="2"
# Vérification du disque et de la partition
if [ ! -b "$disk" ] || [ ! -b "$partition" ]; then
echo "Disque ou partition non trouvé"
exit 1
fi
# Vérification des prérequis
check_prerequisites
# Vérification de l'espace disponible
check_available_space "$disk"
# Vérification du système de fichiers
check_filesystem "$partition"
# 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