109 lines
2.9 KiB
Bash
Executable File
109 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Variables
|
|
NFS_SERVER="nfs.lan:/USBStartKey/"
|
|
MNT_POINT_NFS="/mnt/nfs"
|
|
IMAGE_PATH="$MNT_POINT_NFS/USBStartKey.img"
|
|
LOOP_DEVICE=""
|
|
MNT_POINT_IMG="/mnt/img"
|
|
|
|
# Fonction pour monter les systèmes de fichiers
|
|
mount_filesystems() {
|
|
# Montage des systèmes de fichiers et du périphérique loop
|
|
echo "Montage des systèmes de fichiers..."
|
|
|
|
# Création des points de montage si ils n'existent pas
|
|
echo "Création des points de montage..."
|
|
mkdir -p "$MNT_POINT_NFS"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec de la création du point de montage NFS."
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$MNT_POINT_IMG"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec de la création du point de montage de l'image."
|
|
exit 1
|
|
fi
|
|
|
|
# Montage du système de fichiers NFS
|
|
echo "Montage du système de fichiers NFS..."
|
|
mount.nfs "$NFS_SERVER" "$MNT_POINT_NFS"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec du montage du système de fichiers NFS."
|
|
exit 1
|
|
fi
|
|
|
|
# Création du périphérique loop
|
|
echo "Création du périphérique loop..."
|
|
LOOP_DEVICE=$(losetup --show -P -f "$IMAGE_PATH")
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec de la création du périphérique loop."
|
|
umount "$MNT_POINT_NFS"
|
|
exit 1
|
|
fi
|
|
|
|
# Montage de l'image
|
|
echo "Montage de l'image..."
|
|
mount "${LOOP_DEVICE}p1" "$MNT_POINT_IMG"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec du montage de l'image."
|
|
losetup -d "$LOOP_DEVICE"
|
|
umount "$MNT_POINT_NFS"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Systèmes de fichiers montés avec succès."
|
|
}
|
|
|
|
# Fonction pour démonter les systèmes de fichiers
|
|
umount_filesystems() {
|
|
# Démontage des systèmes de fichiers et déconnexion du périphérique loop
|
|
echo "Démontage des systèmes de fichiers..."
|
|
|
|
# Démontage de l'image
|
|
echo "Démontage de l'image..."
|
|
umount "$MNT_POINT_IMG"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec du démontage de l'image."
|
|
exit 1
|
|
fi
|
|
|
|
# Déconnexion du périphérique loop
|
|
echo "Déconnexion du périphérique loop..."
|
|
losetup -D
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec de la déconnexion du périphérique loop."
|
|
exit 1
|
|
fi
|
|
|
|
# Démontage du système de fichiers NFS
|
|
echo "Démontage du système de fichiers NFS..."
|
|
umount "$MNT_POINT_NFS"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Échec du démontage du système de fichiers NFS."
|
|
exit 1
|
|
fi
|
|
|
|
# Suppression des points de montage
|
|
echo "Suppression des points de montage..."
|
|
if ! rmdir "$MNT_POINT_NFS"; then
|
|
echo "Échec de la suppression du point de montage NFS."
|
|
fi
|
|
|
|
if ! rmdir "$MNT_POINT_IMG"; then
|
|
echo "Échec de la suppression du point de montage image."
|
|
fi
|
|
|
|
echo "Systèmes de fichiers démontés avec succès."
|
|
|
|
}
|
|
|
|
# Vérification de l'état des points de montage
|
|
if mountpoint -q "$MNT_POINT_NFS" && mountpoint -q "$MNT_POINT_IMG"; then
|
|
umount_filesystems
|
|
else
|
|
mount_filesystems
|
|
fi
|
|
|