« Feuille classe » : différence entre les versions
De Travail-ivan
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 2 : | Ligne 2 : | ||
#!/bin/bash | #!/bin/bash | ||
# Script | # 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 | ||
if [ "$ | if [ "$EUID" -ne 0 ]; then | ||
echo "Ce script doit être exécuté en tant que root" | |||
exit 1 | exit 1 | ||
fi | 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 | 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 [ | |||
if [[ -z "$free_space" || "$free_space" == "0.00" ]]; then | |||
echo "Pas d'espace libre disponible sur $disk" | |||
exit 1 | |||
fi | fi | ||
echo "Espace libre disponible : ${free_space}GB" | |||
return 0 | |||
} | |||
# | # Fonction pour vérifier le système de fichiers | ||
check_filesystem() { | |||
local partition=$1 | |||
if | 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 | 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 | |||
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 | |||
</syntaxhighlight> | </syntaxhighlight> |
Version du 28 novembre 2024 à 11:13
#!/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