Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#126 Le 08/04/2025, à 11:13

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Finalement , j' y reviens , pour couvrir les cas les plus courants que l' on trouve sur le forum , a savoir , pour le NTFS et le EXT4 .
je pense qu ' ensuite , je m' arreterais definitivement là , sauf , bien sur , si bug .
Comme je n' ai pas de partition NTFS en partage sur mon ordi , j ' aurais besoin de testeur pour cette version + NTFS , notamment pour les options a inclure dans la ligne du fstab , et la creation de la corbeille le cas échéant .

Voici la nouvelle version :

#!/bin/bash

label() {
	local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

	while [ -z "$Label" ]; do
		echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données , elle doit être UNIQUE et ne pas contenir d' espace , d' accent , de caractères spéciaux et au maximum 16 caractères :"
		read -r Label
		if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
			echo "le nom de votre étiquette comporte un espace, un accent ou un caractère spécial ou plus de 16 caractères !"
			unset Label
		fi
	done
	for (( n=0; n<"$nbDev"; n++ )); do # etiquette deja utilisée ?
		if [[ $Label == "${ListPart[$n,1]}" ]]; then
			echo "erreur votre étiquette « $Label » est dejà attribuée !"
			exit 7
		fi
	done
}

if ((UID)); then
	echo "Vous devez être super utilisateur pour lancer ce script ( essayez avec « sudo » )"
	exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext" \
{ 
j=0 ; 
if ($2 ~ /^ext[2-4]$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$3 } 
else 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 } 
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
	echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}  ${ListPart[$n,1]} ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
	read -p "Choisissez le numero correspondant à votre future partition de données : " PartNum
	if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif
		echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
		unset PartNum
	elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
		echo "Votre choix doit être compris entre 1 et $nbDev."
		unset PartNum
	fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

echo "$PartFstype"

if [ -z "$PartLabel" ]; then
	echo "La partition « $Part » n’a pas d’étiquette."
	label
else
	echo "La partition « $Part » a l’étiquette « $PartLabel »."
	while [ -z "$Rep" ]; do
		echo -n "Voulez-vous changer l ' étiquette de la partition « $Part » :  [O/n] ?"
		read -r Rep
		if [[ "$Rep" == [YyoO]* ]]; then
			label
		else
			Label="$PartLabel"
		fi
	done
fi

while [ -z "$Rep2" ]; do
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » : [O/n] ?"
	read -r Rep2
done

if [[ "$Rep2" != [YyoO]* ]]; then
	echo -e "Annulation par l' utilisateur !"
	exit 0
elif [ ! -e "$Part" ]; then # vérification que la partition existe bien 
	echo -e "La partition « $Part » n' existe pas !"
	exit 1
elif [ "$(lsblk -no fstype "$Part")" != ext4 ]; then # vérifier qu ' elle est bien formatée en ext4
	echo -e "la partition « $Part » n' est pas formatée en EXT4 ! "
	exit 2
elif grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # verifier si la ligne existe dans le fstab 
	echo -e "une partition avec etiquette « $Label » est déjà traitée dans le fichier /etc/fstab , rien n' a donc été modifié !"
	exit 3
elif grep -q "^$Part" /etc/mtab; then # verifier si la partition est deja montée
	echo -e "La partition « $Part » est déjà montée !"
	exit 4
elif (( "$(grep -q "$Label" /etc/fstab)" )); then # verifier si une etiquette du meme nom existe dans le fstab
	echo -e "L ' étiquette « $Label » est déjà utilisée dans le fstab !"
	exit 5
elif (( "$(grep -q "$(lsblk -no uuid "$Part")" /etc/fstab)" )); then # PartUUID est deja present dans fstab
	echo -e "L UUID de la partition est déjà présent dans le fstab !"
	exit 6
fi
  
# construction des éléments :
if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" ]]; then
	echo " FSTYPE=$PartFstype"
	#e2label "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
	#chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
elif [[ "$PartFstype" == "ntfs"  ]]; then
	echo " FSTYPE=$PartFstype"
	#ntfslabel  "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
fi
#mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
	echo " Script pour montage de partition de données terminé avec succès !"
fi

j ' ai commenté les lignes de modification du bas pour eviter tout modification hasardeuse sur le systeme , ca ne procede donc , en l' etat a aucune modification " .

Pour la corbeille , d' apres cette page : https://doc.ubuntu-fr.org/tutoriel/part … ows_ubuntu , les manipulations sont identiques a une partition au format ext3/4 ?
cela me parait curieux , du fait que NTFS ne gere pas les permissions de fichiers ... , à creuser donc .

Dernière modification par iznobe (Le 08/04/2025, à 18:10)

En ligne

#127 Le 08/04/2025, à 18:14

geole

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour iznobe
A mon avis, il faudra que le script liste les partitions NTFS pour qu'on puisse choisir   une partition en NTFS puisque le script ne prévoit pas de reformater une partition EXT4 en NTFS

a@b:~$ sudo bash part_data.sh
bash: part_data.sh: Aucun fichier ou dossier de ce nom
a@b:~$ sudo bash /tmp/part_data.sh
1 ⇒ /dev/sda4  ssdUbuntu2404 ext4
2 ⇒ /dev/sdc5  4ToHOME ext4
3 ⇒ /dev/sdc11  4ToFamille ext4
4 ⇒ /dev/sdc13  4TossdUbuntu2404 ext4
5 ⇒ /dev/sdc15  4ToUbuntu ext4
6 ⇒ /dev/sdd9  Partage ext4
7 ⇒ /dev/sdd10   
8 ⇒ /dev/md0   
9 ⇒ /dev/md0   
Choisissez le numero correspondant à votre future partition de données : 7

La partition « /dev/sdd10 » n’a pas d’étiquette.
Choisissez l ' étiquette ( LABEL ) de votre partition de données , elle doit être UNIQUE et ne pas contenir d' espace , d' accent , de caractères spéciaux et au maximum 16 caractères :MonTest
Voulez-vous procéder au montage maintenant pour la partition « /dev/sdd10 » en y mettant pour étiquette « MonTest » : [O/n] ?
Voulez-vous procéder au montage maintenant pour la partition « /dev/sdd10 » en y mettant pour étiquette « MonTest » : [O/n] ?o
a@b:~$ 

Je remarque que tu ne devrais pas mettre en grand O puisque ce n'est pas implicite

Nota. Le choix est pourtant vaste, le serait-il trop?

sudo blkid | grep ntfs
/dev/sda1: LABEL="ssdWinboot" BLOCK_SIZE="512" UUID="796B23D11411E4F8" TYPE="ntfs" PARTUUID="cb53304e-01"
/dev/sda2: LABEL="ssdWinXP" BLOCK_SIZE="512" UUID="39A322D60E9DD672" TYPE="ntfs" PARTUUID="cb53304e-02"
/dev/sda3: LABEL="ssdWin10" BLOCK_SIZE="512" UUID="444881213A36C963" TYPE="ntfs" PARTUUID="cb53304e-03"
/dev/sdb1: LABEL="WinXP-2To" BLOCK_SIZE="512" UUID="45FF433E2AB93675" TYPE="ntfs" PARTUUID="c70ec70e-01"
/dev/sdb2: LABEL="NosDonnees" BLOCK_SIZE="512" UUID="09FD70E16774D4DD" TYPE="ntfs" PARTUUID="c70ec70e-02"
/dev/sdb3: LABEL="Win7-2To" BLOCK_SIZE="512" UUID="2A98523F98520A29" TYPE="ntfs" PARTUUID="c70ec70e-03"
/dev/sdc2: LABEL="4ToWinXP-2To" BLOCK_SIZE="512" UUID="6E695A832AB93675" TYPE="ntfs" PARTUUID="4fdedfd5-6fc7-4cb8-909d-0c3cf9d7bb43"
/dev/sdc3: LABEL="4ToWin7-2To" BLOCK_SIZE="512" UUID="2765294449F57338" TYPE="ntfs" PARTUUID="2e6c8125-2ac6-4a2c-8d11-a380149b87b5"
/dev/sdc4: LABEL="4tossdWinboot" BLOCK_SIZE="512" UUID="3A09CF611411E4F8" TYPE="ntfs" PARTUUID="9aee64e1-5a47-4e8d-96c7-88c2bf6caf58"
/dev/sdc6: LABEL="4ToNosDonnees" BLOCK_SIZE="512" UUID="79C4B3D0419CFB41" TYPE="ntfs" PARTLABEL="4ToToutleDisqueDe2To" PARTUUID="8ecc9207-a6e4-401a-a7b2-c0d5ae21ef3d"
/dev/sdc7: LABEL="4ToBigDisk" BLOCK_SIZE="512" UUID="09FD70E16774D4DD" TYPE="ntfs" PARTUUID="c618e3ab-373d-442d-9c11-f445586fdc92"
/dev/sdc8: LABEL="4ToReserve" BLOCK_SIZE="512" UUID="60DD43CF4E57701D" TYPE="ntfs" PARTUUID="dde38661-7b0f-4e60-a892-a2a5a9508981"
/dev/sdc9: LABEL="4TossdWin10" BLOCK_SIZE="512" UUID="50C957C93A36C963" TYPE="ntfs" PARTUUID="9ee0fe84-8fab-4fa9-bb1f-bb82b92ef2bd"
/dev/sdc12: LABEL="4tossdWin10-OLD" BLOCK_SIZE="512" UUID="08392AB63A36C963" TYPE="ntfs" PARTUUID="7a7a7768-644f-4f8f-b4a2-785910e27a56"
/dev/sdd5: LABEL="ntfs3g" BLOCK_SIZE="512" UUID="77CF9D07172322A7" TYPE="ntfs" PARTUUID="bf70a9dd-05"
/dev/sdd6: LABEL="ntfs3" BLOCK_SIZE="512" UUID="2047C0437587228F" TYPE="ntfs" PARTUUID="bf70a9dd-06"
/dev/sdd10: BLOCK_SIZE="512" UUID="1D829BA03322D7FB" TYPE="ntfs" PARTUUID="bf70a9dd-0a"

Dernière modification par geole (Le 08/04/2025, à 18:30)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#128 Le 08/04/2025, à 18:15

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

pas faux tongue

En ligne

#129 Le 08/04/2025, à 18:53

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Bon , je n' arrive pas à faire le " ou logique " dans la regex de $NF hmm :

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs || ext" \ # ne fonctionne pas ...
{ 
j=0 ; 
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs[,3]$/ )
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$3 } 
else 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 } 
}')

Mieux comme ça , mais pas parfait :

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs\|ext" \
{ 
j=0 ; 
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs[,3]$/ )
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$3 } 
else 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 } 
}')

puisque j' obtiens :

awk: ligne de commande:2: avertissement : séquence d'échappement « \| » traitée comme un simple « | »

Dernière modification par iznobe (Le 08/04/2025, à 18:59)

En ligne

#130 Le 08/04/2025, à 19:04

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

ok , ca parait correct maintenant pour :

#!/bin/bash

label() {
	local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

	while [ -z "$Label" ]; do
		echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données , elle doit être UNIQUE et ne pas contenir d' espace , d' accent , de caractères spéciaux et au maximum 16 caractères :"
		read -r Label
		if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
			echo "le nom de votre étiquette comporte un espace, un accent ou un caractère spécial ou plus de 16 caractères !"
			unset Label
		fi
	done
	for (( n=0; n<"$nbDev"; n++ )); do # etiquette deja utilisée ?
		if [[ $Label == "${ListPart[$n,1]}" ]]; then
			echo "erreur votre étiquette « $Label » est dejà attribuée !"
			exit 7
		fi
	done
}

if ((UID)); then
	echo "Vous devez être super utilisateur pour lancer ce script ( essayez avec « sudo » )"
	exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs|ext" \
{ 
j=0 ; 
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs[,3]$/ )
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$3 } 
else 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 } 
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
	echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
	read -p "Choisissez le numero correspondant à votre future partition de données : " PartNum
	if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif
		echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
		unset PartNum
	elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
		echo "Votre choix doit être compris entre 1 et $nbDev."
		unset PartNum
	fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
	echo "La partition « $Part » n’a pas d’étiquette."
	label
else
	echo "La partition « $Part » a l’étiquette « $PartLabel »."
	while [ -z "$Rep" ]; do
		echo -n "Voulez-vous changer l ' étiquette de la partition « $Part » :  [O/n] ?"
		read -r Rep
		if [[ "$Rep" == [YyoO]* ]]; then
			label
		else
			Label="$PartLabel"
		fi
	done
fi

while [ -z "$Rep2" ]; do
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » : [O/n] ?"
	read -r Rep2
done

if [[ "$Rep2" != [YyoO]* ]]; then
	echo -e "Annulation par l' utilisateur !"
	exit 0
elif [ ! -e "$Part" ]; then # vérification que la partition existe bien 
	echo -e "La partition « $Part » n' existe pas !"
	exit 1
elif [ "$(lsblk -no fstype "$Part")" != ext4 ]; then # vérifier qu ' elle est bien formatée en ext4
	echo -e "la partition « $Part » n' est pas formatée en EXT4 ! "
	exit 2
elif grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # verifier si la ligne existe dans le fstab 
	echo -e "une partition avec etiquette « $Label » est déjà traitée dans le fichier /etc/fstab , rien n' a donc été modifié !"
	exit 3
elif grep -q "^$Part" /etc/mtab; then # verifier si la partition est deja montée
	echo -e "La partition « $Part » est déjà montée !"
	exit 4
elif (( "$(grep -q "$Label" /etc/fstab)" )); then # verifier si une etiquette du meme nom existe dans le fstab
	echo -e "L ' étiquette « $Label » est déjà utilisée dans le fstab !"
	exit 5
elif (( "$(grep -q "$(lsblk -no uuid "$Part")" /etc/fstab)" )); then # PartUUID est deja present dans fstab
	echo -e "L UUID de la partition est déjà présent dans le fstab !"
	exit 6
fi
  
# construction des éléments :
if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" ]]; then
	echo " FSTYPE=$PartFstype"
	#e2label "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
	#chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
elif [[ "$PartFstype" == "ntfs"  ]]; then
	echo " FSTYPE=$PartFstype"
	#ntfslabel  "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
fi
#mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
	echo " Script pour montage de partition de données terminé avec succès !"
fi

Mais la condition :

if [[ -z "$PartLabel" ]]; then
	echo "La partition « $Part » n’a pas d’étiquette."
	label
else

ne fonctionne pas roll
il me dit que l ' etiquette est ntfs ...

Dernière modification par iznobe (Le 08/04/2025, à 19:15)

En ligne

#131 Le 08/04/2025, à 19:43

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

@nany , on ne pourrait pas s ' inspirer de ça https://stackoverflow.com/questions/435 … ns-a-not-b , plutot que de :

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs|ext" \
{ 
j=0 ; 
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs[,3]$/ )
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$3 } 
else 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 } 
}')

En ligne

#132 Le 08/04/2025, à 20:02

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour,



Ligne 33 à corriger comme ceci :

{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }

Hors ligne

#133 Le 08/04/2025, à 20:07

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

on ne pourrait pas s ' inspirer de ça https://stackoverflow.com/questions/435 … ns-a-not-b

Je ne vois pas le rapport avec lsblk. ¯\_(ツ)_/¯

Hors ligne

#134 Le 08/04/2025, à 20:23

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

Ligne 32, pourquoi $2 ~ /^ntfs[,3]$/ ?
Il existe un système de fichiers de type ntfs3 ?
Si oui, je verrais plutôt $2 ~ /^ntfs3?$/.
Sinon, $2 ~ /^ntfs$/

Hors ligne

#135 Le 08/04/2025, à 20:46

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

c' etait des tests ...

-----------------------------------------

nany a écrit :

Je ne vois pas le rapport avec lsblk. ¯\_(ツ)_/¯

je parle pas de la commande à proprement parler , mais plutot de la structure de mise en place du tableau , de la " conception " de celui-ci  et de son parcours .
je retrouve pas mal de similtude avec ton code ( que j' ai beaucoup de mal à modifier / adapter ) dans la structure sur le code suivant qu ' a employer la personne du lien :

declare -a vid_files=()
while IFS= read -r -d '' file 
do
  ! [[ "$file" =~ Robot ]] || continue
  vid_files+=("$file")
done < <(find "${DIR}" -type f -regex ".*\.\(mkv\|avi\|ts\|mp4\|m2ts\)" -print0)

The -print0 option of find generates a null byte to separate the file names, and the -d '' option of read allows a null byte to be used as a record separator (both obviously go together).

You can get the list of files using "${vid_files[@]}" (double quotes are important to prevent word splitting). You can also iterate over the list easily :

for file in "${vid_files[@]}"
do
  echo "$file"
done

Notamment la création d ' un " point de parcours " qui permet donc de se passer du if else imbriqué au travers de " awk " , mais après , je n' ai pas suffisamment de recul pour dire si c' est bien ou pas / adaptable ou pas , pour lister les partitions au moyen de lsblk .

Toujours est il que si je veux inclure le NTFS comme format de partition géré par le script , j ' ai besoin de modifier ta partie de code , et sans la coloration syntaxique , c' est une vrai misère .

j ' ai essayé pas mal de chose , pour le moment , toujours en test , j ' en suis rendu là :

#!/bin/bash

label() {
	local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

	while [ -z "$Label" ]; do
		echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données , elle doit être UNIQUE et ne pas contenir d' espace , d' accent , de caractères spéciaux et au maximum 16 caractères :"
		read -r Label
		if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
			echo "le nom de votre étiquette comporte un espace, un accent ou un caractère spécial ou plus de 16 caractères !"
			unset Label
		fi
	done
	for (( n=0; n<"$nbDev"; n++ )); do # etiquette deja utilisée ?
		if [[ $Label == "${ListPart[$n,1]}" ]]; then
			echo "erreur votre étiquette « $Label » est dejà attribuée !"
			exit 7
		fi
	done
}

if ((UID)); then
	echo "Vous devez être super utilisateur pour lancer ce script ( essayez avec « sudo » )"
	exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs|ext" \
{
j=0 ;
if ($2 ~ "$NF")
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$3 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
	echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
	read -p "Choisissez le numero correspondant à votre future partition de données : " PartNum
	if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif
		echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
		unset PartNum
	elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
		echo "Votre choix doit être compris entre 1 et $nbDev."
		unset PartNum
	fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
	echo "La partition « $Part » n’a pas d’étiquette."
	label
else
	echo "La partition « $Part » a l’étiquette « $PartLabel »."
	while [ -z "$Rep" ]; do
		echo -n "Voulez-vous changer l ' étiquette de la partition « $Part » :  [O/n] ?"
		read -r Rep
		if [[ "$Rep" == [YyoO]* ]]; then
			label
		else
			Label="$PartLabel"
		fi
	done
fi

while [ -z "$Rep2" ]; do
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » : [O/n] ?"
	read -r Rep2
done

if [[ "$Rep2" != [YyoO]* ]]; then
	echo -e "Annulation par l' utilisateur !"
	exit 0
elif [ ! -e "$Part" ]; then # vérification que la partition existe bien 
	echo -e "La partition « $Part » n' existe pas !"
	exit 1
elif [ "$(lsblk -no fstype "$Part")" != ext4 ]; then # vérifier qu ' elle est bien formatée en ext4
	echo -e "la partition « $Part » n' est pas formatée en EXT4 ! "
	exit 2
elif grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # verifier si la ligne existe dans le fstab 
	echo -e "une partition avec etiquette « $Label » est déjà traitée dans le fichier /etc/fstab , rien n' a donc été modifié !"
	exit 3
elif grep -q "^$Part" /etc/mtab; then # verifier si la partition est deja montée
	echo -e "La partition « $Part » est déjà montée !"
	umount -v $Part
	continue
elif (( "$(grep -q "$Label" /etc/fstab)" )); then # verifier si une etiquette du meme nom existe dans le fstab
	echo -e "L ' étiquette « $Label » est déjà utilisée dans le fstab !"
	exit 5
elif (( "$(grep -q "$(lsblk -no uuid "$Part")" /etc/fstab)" )); then # PartUUID est deja present dans fstab
	echo -e "L ' UUID de la partition est déjà présent dans le fstab !"
	exit 6
fi
  
# construction des éléments :
if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" ]]; then
	echo " FSTYPE=$PartFstype"
	#e2label "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
	#chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
elif [[ "$PartFstype" == "ntfs"  ]]; then
	echo " FSTYPE=$PartFstype"
	#ntfslabel  "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
fi
#mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
	echo "Script pour montage de partition de données terminé avec succès !"
	echo "Vous pouvez maintenant acceder à votre partition en parcourant le dossier suivant : « /media/$Label/"$SUDO_USER"-"$Label" » .
fi

mais , je ne comprends pas pourquoi , il ne me met plus le PartLabel en champ " vide " .
et le résultat des courses , est que si je n' ai pas de LABEL , alors le script me répond :
que l ' étiquette est le FSTYPE , c' est logique en soi . mais bon , c' est pas ce que je veux obtenir du code ...

Dernière modification par iznobe (Le 08/04/2025, à 20:57)

En ligne

#136 Le 08/04/2025, à 20:58

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

mais plutot de la structure de mise en place du tableau , de la " conception " de celui-ci  et de son parcours

C’est totalement différent, ce n’est pas un tableau associatif.



iznobe a écrit :

mais , je ne comprends pas pourquoi , il ne me met plus le PartLabel en champ " vide " .
et le resultat des courses , est que si je n' ai pas de LABEL , alors le script me repond :
que l ' etiquette est le FSTYPE , c' est logique en soi . mais bon , c' est pas ce que je veux obtenir du code ...

Cf. le message #132.

Hors ligne

#137 Le 08/04/2025, à 21:06

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

nany a écrit :

Bonjour,



Ligne 33 à corriger comme ceci :

{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }

Merci , pfff , l ' erreur vraiment relou quoi roll

En ligne

#138 Le 08/04/2025, à 21:11

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Apres modification , ca me donne toujours :

iznobe@iznobe-pc:/datas/iznobe/Scripts$ sudo bash mount_auto_part_data.sh 
1 ⇒ /dev/sda1   Seagate_4T   ext4
2 ⇒ /dev/sda3   liqhef   ext4
3 ⇒ /dev/sda4   ubuntu_24.04   ext3
4 ⇒ /dev/sdb1   WD8   ext4
5 ⇒ /dev/sdb2   SAUV   ext4
6 ⇒ /dev/sdc3   Data   ext4
7 ⇒ /dev/sdd1   WD8PRO1_P1   ext4
8 ⇒ /dev/sdd2   WD8PRO1_P2   ext4
9 ⇒ /dev/sde1   WD8PRO2   ext4
10 ⇒ /dev/nvme0n1p1   windows_10   ntfs
11 ⇒ /dev/nvme0n1p2   ntfs   
12 ⇒ /dev/nvme0n1p4   ntfs   
13 ⇒ /dev/nvme0n1p5   LM_21_SSD   ext4
14 ⇒ /dev/nvme0n1p6   U_20.04_SSD   ext4
15 ⇒ /dev/nvme0n1p7   U_22.budgie_SSD   ext4
16 ⇒ /dev/nvme0n1p8   U_24.04_SSD   ext4
17 ⇒ /dev/nvme0n1p9   LM_SSD_NEW   ext4
18 ⇒ /dev/nvme0n1p10   DEBIAN_XFCE   ext4
19 ⇒ /dev/nvme0n1p11   Archlinux   ext4
Choisissez le numero correspondant à votre future partition de données : 12
La partition « /dev/nvme0n1p4 » a l’étiquette « ntfs ».
Voulez-vous changer l ' étiquette de la partition « /dev/nvme0n1p4 » :  [O/n] ?

Avec le script de mon message précédent et la ligne modifié avec champ3 => $2 que tu m' as indiquée .
je le remet ici au cas ou :

#!/bin/bash

label() {
	local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

	while [ -z "$Label" ]; do
		echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données , elle doit être UNIQUE et ne pas contenir d' espace , d' accent , de caractères spéciaux et au maximum 16 caractères :"
		read -r Label
		if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
			echo "le nom de votre étiquette comporte un espace, un accent ou un caractère spécial ou plus de 16 caractères !"
			unset Label
		fi
	done
	for (( n=0; n<"$nbDev"; n++ )); do # etiquette deja utilisée ?
		if [[ $Label == "${ListPart[$n,1]}" ]]; then
			echo "erreur votre étiquette « $Label » est dejà attribuée !"
			exit 7
		fi
	done
}

if ((UID)); then
	echo "Vous devez être super utilisateur pour lancer ce script ( essayez avec « sudo » )"
	exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs|ext" \
{
j=0 ;
if ($2 ~ "$NF")
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
	echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
	read -p "Choisissez le numero correspondant à votre future partition de données : " PartNum
	if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif
		echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
		unset PartNum
	elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
		echo "Votre choix doit être compris entre 1 et $nbDev."
		unset PartNum
	fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
	echo "La partition « $Part » n’a pas d’étiquette."
	label
else
	echo "La partition « $Part » a l’étiquette « $PartLabel »."
	while [ -z "$Rep" ]; do
		echo -n "Voulez-vous changer l ' étiquette de la partition « $Part » :  [O/n] ?"
		read -r Rep
		if [[ "$Rep" == [YyoO]* ]]; then
			label
		else
			Label="$PartLabel"
		fi
	done
fi

while [ -z "$Rep2" ]; do
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » : [O/n] ?"
	read -r Rep2
done

if [[ "$Rep2" != [YyoO]* ]]; then
	echo -e "Annulation par l' utilisateur !"
	exit 0
elif [ ! -e "$Part" ]; then # vérification que la partition existe bien 
	echo -e "La partition « $Part » n' existe pas !"
	exit 1
elif [ "$(lsblk -no fstype "$Part")" != ext4 ]; then # vérifier qu ' elle est bien formatée en ext4
	echo -e "la partition « $Part » n' est pas formatée en EXT4 ! "
	exit 2
elif grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # verifier si la ligne existe dans le fstab 
	echo -e "une partition avec etiquette « $Label » est déjà traitée dans le fichier /etc/fstab , rien n' a donc été modifié !"
	exit 3
elif grep -q "^$Part" /etc/mtab; then # verifier si la partition est deja montée
	echo -e "La partition « $Part » est déjà montée !"
	umount -v $Part
	continue
elif (( "$(grep -q "$Label" /etc/fstab)" )); then # verifier si une etiquette du meme nom existe dans le fstab
	echo -e "L ' étiquette « $Label » est déjà utilisée dans le fstab !"
	exit 5
elif (( "$(grep -q "$(lsblk -no uuid "$Part")" /etc/fstab)" )); then # PartUUID est deja present dans fstab
	echo -e "L ' UUID de la partition est déjà présent dans le fstab !"
	exit 6
fi
  
# construction des éléments :
if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" ]]; then
	echo " FSTYPE=$PartFstype"
	#e2label "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
	#chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
elif [[ "$PartFstype" == "ntfs"  ]]; then
	echo " FSTYPE=$PartFstype"
	#ntfslabel  "$Part" "$Label"
	#echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
	#mkdir /media/"$Label" 2>/dev/null
	#systemctl daemon-reload
	#mount -a 2>/dev/null
	#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
fi
#mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
#chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
	echo "Script pour montage de partition de données terminé avec succès !"
	echo "Vous pouvez maintenant acceder à votre partition en parcourant le dossier suivant : « /media/$Label/"$SUDO_USER"-"$Label" » .
fi

serait ce à cause du changement de la regex ? :

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ntfs|ext" \
{
j=0 ;
if ($2 ~ "$NF")
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

Dernière modification par iznobe (Le 08/04/2025, à 21:16)

En ligne

#140 Le 09/04/2025, à 01:09

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

ok , alors voici , plus qu ' a tester ce que ca dit comme ca :

#!/bin/bash

label() {
	local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

	while [ -z "$Label" ]; do
		echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données , elle doit être UNIQUE et ne pas contenir d' espace , d' accent , de caractères spéciaux et au maximum 16 caractères :"
		read -r Label
		if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
			echo "le nom de votre étiquette comporte un espace, un accent ou un caractère spécial ou plus de 16 caractères !"
			unset Label
		fi
	done
	for (( n=0; n<"$nbDev"; n++ )); do # etiquette deja utilisée ?
		if [[ $Label == "${ListPart[$n,1]}" ]]; then
			echo "erreur votre étiquette « $Label » est dejà attribuée !"
			exit 7
		fi
	done
}

if ((UID)); then
	echo "Vous devez être super utilisateur pour lancer ce script ( essayez avec « sudo » )"
	exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext|ntfs" \
{
j=0 ;
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
	echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
	read -p "Choisissez le numero correspondant à votre future partition de données : " PartNum
	if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif
		echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
		unset PartNum
	elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
		echo "Votre choix doit être compris entre 1 et $nbDev."
		unset PartNum
	fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
	echo "La partition « $Part » n’a pas d’étiquette."
	label
else
	echo "La partition « $Part » a l’étiquette « $PartLabel »."
	while [ -z "$Rep" ]; do
		echo -n "Voulez-vous changer l'étiquette de la partition « $Part » :  [O/n] ?"
		read -r Rep
		case "$Rep" in
            N|n)
            	Label="$PartLabel"
            ;;
            Y|y|O|o|*)
            	label
            ;;
		esac
	done
fi

while [ -z "$Rep2" ]; do
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » : [O/n] ?"
	read -r Rep2
done

case "$Rep2" in
    N|n)
 		echo -e "Annulation par l' utilisateur !"
		exit 0
    ;;
    Y|y|O|o|*)
        if [ ! -e "$Part" ]; then # vérification que la partition existe bien 
			echo -e "La partition « $Part » n' existe pas !"
			exit 1
		elif [ "$PartFstype" != ext4 ] && [ "$PartFstype" != ext3 ] && [ "$PartFstype" != ntfs ]; then # vérifier qu ' elle est bien formatée en ext4
		#elif [ "$PartFstype" =~ "$NF"]; then
			echo -e "la partition « $Part » n' est pas au bon format ! "
			exit 2
		elif grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # verifier si la ligne existe dans le fstab 
			echo -e "une partition avec etiquette « $Label » est déjà traitée dans le fichier /etc/fstab , rien n' a donc été modifié !"
			exit 3
		elif grep -q "^$Part" /etc/mtab; then # verifier si la partition est deja montée
			echo -e "La partition « $Part » est déjà montée !"
			umount -v "$Part"
			#exit 4
		elif (( "$(grep -q "$Label" /etc/fstab)" )); then # verifier si une etiquette du meme nom existe dans le fstab
			echo -e "L ' étiquette « $Label » est déjà utilisée dans le fstab !"
			exit 5
		elif (( "$(grep -q "$(lsblk -no uuid "$Part")" /etc/fstab)" )); then # PartUUID est deja present dans fstab
			echo -e "L ' UUID de la partition est déjà présent dans le fstab !"
			exit 6
		fi
		  
		# construction des éléments :
		if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" ]]; then
			echo " FSTYPE=$PartFstype"
			#e2label "$Part" "$Label"
			#echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
			#mkdir /media/"$Label" 2>/dev/null
			#systemctl daemon-reload
			#mount -a 2>/dev/null
			#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
			#chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
		elif [[ "$PartFstype" == "ntfs"  ]]; then
			echo " FSTYPE=$PartFstype"
			#ntfslabel  "$Part" "$Label"
			#echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
			#echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
			#mkdir /media/"$Label" 2>/dev/null
			#systemctl daemon-reload
			#mount -a 2>/dev/null
			#mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
		fi
		#mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
		#chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
		#chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

		if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
			echo "Script pour montage de partition de données terminé avec succès !"
			echo "Vous pouvez maintenant acceder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label » ."
		fi
	;;
esac

toujours 2 questions en suspens :
pour la corbeille d ' une partition au format NTFS , est ce utile de chmod + chown la corbeille ???
et quelles sont les options à placer dans le fstab pour une intégration de la partition NTFS en " standard " ?

Et au niveau du code , lorsque j' appuie sur entrée à la question " Voulez-vous procéder au montage maintenant pour la partition « .... " , ca n' enclenche pas comme si j' avais mis " o " , mais je ne vois pas trop pourquoi .

Dernière modification par iznobe (Le 09/04/2025, à 01:36)

En ligne

#141 Le 09/04/2025, à 07:48

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour,



iznobe a écrit :

toujours 2 questions en suspens :
pour la corbeille d ' une partition au format NTFS , est ce utile de chmod + chown la corbeille ???
et quelles sont les options à placer dans le fstab pour une intégration de la partition NTFS en " standard " ?

Je ne sais pas.

iznobe a écrit :

Et au niveau du code , lorsque j' appuie sur entrée à la question " Voulez-vous procéder au montage maintenant pour la partition « .... " , ca n' enclenche pas comme si j' avais mis " o " , mais je ne vois pas trop pourquoi .

C’est à cause de :

while [ -z "$Rep2" ]; do
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » : [O/n] ?"
	read -r Rep2
done

Tant que Rep2 est vide, on reste dans la boucle.
Mais, puisqu’on traite la réponse avec un case, plus besoin de tester la présence de cette réponse.
Du coup :

#!/bin/bash

label() {
  local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

  while [ -z "$Label" ]; do
    echo -n "Choisissez l’étiquette (LABEL) de votre partition de données, elle doit être UNIQUE et ne pas contenir d’espace, d’accent, de caractères spéciaux et au maximum 16 caractères : "
    read -r Label
    if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
      echo "Le nom de votre étiquette comporte une espace, un accent ou un caractère spécial ou plus de 16 caractères !"
      unset Label
    fi
  done
  for (( n=0; n<"$nbDev"; n++ )); do # étiquette déjà utilisée ?
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 7
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext|ntfs" \
{
j=0 ;
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
  echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
  read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
  if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif non nul
    echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
    unset PartNum
  elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
    echo "Votre choix doit être compris entre 1 et $nbDev."
    unset PartNum
  fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
  echo "La partition « $Part » n’a pas d’étiquette."
  label
else
  echo "La partition « $Part » a l’étiquette « $PartLabel »."
  echo -n "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] "
  read -r Rep
  case "$Rep" in
    N|n)
      Label="$PartLabel"
    ;;
    *)
      label
    ;;
  esac
fi

echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » ? [O/n] "
read -r Rep2

case "$Rep2" in
  N|n)
 	  echo -e "Annulation par l’utilisateur !"
    exit 0
  ;;
  *)
    if [ ! -e "$Part" ]; then # vérification que la partition existe bien 
      echo -e "La partition « $Part » n’existe pas !"
      exit 1
    fi
    if [ "$PartFstype" != ext4 ] && [ "$PartFstype" != ext3 ] && [ "$PartFstype" != ext2 ] && [ "$PartFstype" != ntfs ]; then # vérifier qu’elle est bien formatée en ext ou ntfs
      echo -e "La partition « $Part » n’est pas au bon format !"
      exit 2
    fi
    if grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # vérifier si la ligne existe dans le fstab 
      echo -e "Une partition avec étiquette « $Label » est déjà traitée dans le fichier /etc/fstab, rien n’a donc été modifié !"
      exit 3
    fi
    if grep -q "^$Part" /etc/mtab; then # vérifier si la partition est déjà montée
      echo -e "La partition « $Part » est déjà montée !"
      umount -v "$Part"
      #exit 4
    fi
    if grep -q "$Label" /etc/fstab; then # vérifier si une étiquette du même nom existe dans le fstab
      echo -e "L’étiquette « $Label » est déjà utilisée dans le fstab !"
      exit 5
    fi
    if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then # PartUUID est déjà present dans fstab
      echo -e "L’UUID de la partition est déjà présent dans le fstab !"
      exit 6
    fi

    # construction des éléments :
    if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" || "$PartFstype" == "ext2" ]]; then
      echo " FSTYPE=$PartFstype"
      #e2label "$Part" "$Label"
      #echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
    elif [[ "$PartFstype" == "ntfs"  ]]; then
      echo " FSTYPE=$PartFstype"
      #ntfslabel  "$Part" "$Label"
      #echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
      #echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
    fi
    #mkdir /media/"$Label" 2>/dev/null
    #systemctl daemon-reload
    #mount -a 2>/dev/null
    #mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

    if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
      echo "Script pour montage de partition de données terminé avec succès !"
      echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
    fi
  ;;
esac

J’ai aussi :

  • supprimé les elif en fin de traitement (chaque cas devant pouvoir être testé) ;

  • pris en compte ext2 (peut-être faudrait-il traiter ce cas à part) ;

  • déplacé les lignes en double dans « construction des éléments » ;

  • corrigé les erreurs typographiques (ça piquait un peu les yeux) ;

  • unifié les indentations (choix de deux espaces en remplacement des tabulations) ;

  • et peut-être encore deux ou trois petites choses.

Dernière modification par nany (Le 09/04/2025, à 07:54)

Hors ligne

#142 Le 09/04/2025, à 08:56

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour nany ,

Tant que Rep2 est vide, on reste dans la boucle.
Mais, puisqu’on traite la réponse avec un case, plus besoin de tester la présence de cette réponse.

Arf , exact , a force d' avoir le nez dedans , on ne voit plus les choses parfois pourtant evidente ...

J’ai aussi :

    supprimé les elif en fin de traitement (chaque cas devant pouvoir être testé) ;

Bof , si une erreur apparait , et qu ' un exit est donc atteint , if ou elif , le resultat est le meme => fin du script .

nany a écrit :

pris en compte ext2 (peut-être faudrait-il traiter ce cas à part) ;

je ne sais pas où trouver de la doc , ni si c' est pertinent .

nany a écrit :

déplacé les lignes en double dans « construction des éléments » ;

Merci , ca m' evitera de le faire , je n ' avais pas encore fini cette partie .

je préféré les tabulations , plus facile pour moi de gerer l ' indentation tongue

je regarderai plus en détails , surement ce soir .


pourquoi avoir mis :

case "$Rep2" in
  N|n)
 	  echo -e "Annulation par l’utilisateur !"
    exit 0
  ;;
  *)
...

si l' utilisateur tape " b " , ca ne va pas valider ?
il n ' y a pas moyen de faire :
cas Nn => exit
cas YyOo et touche entrée , on poursuit le traitement
cas autre chose => on remet la question

?

Dernière modification par iznobe (Le 09/04/2025, à 09:05)

En ligne

#143 Le 09/04/2025, à 09:26

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

Bof , si une erreur apparait , et qu ' un exit est donc atteint , if ou elif , le resultat est le meme => fin du script .

J’avais testé pour le cas de l’exit 4 qui est commenté et ensuite je devais avoir l’exit 6 mais ce n’était pas le cas à cause des elif donc je les ai tous supprimés.




iznobe a écrit :

je préféré les tabulations , plus facile pour moi de gerer l ' indentation

Chacun son style. Personnellement, j’ai choisi les espaces pour avoir quelque chose d’uniforme quel que soit l’éditeur de texte (ou IDE) où il est possible de régler des tailles de tabulations différentes suivant les logiciels.




iznobe a écrit :

pourquoi avoir mis :

case "$Rep2" in
  N|n)
 	  echo -e "Annulation par l’utilisateur !"
    exit 0
  ;;
  *)
...

si l' utilisateur tape " b " , ca ne va pas valider ?

Si, mais c’était déjà le cas avec Y|y|O|o|* (donc ce qui précédait l’astérisque était inutile).
D’ailleurs, ça valide aussi si on répond « non » en toutes lettres.

Hors ligne

#144 Le 09/04/2025, à 10:04

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

pour l' ' exit 4 ' , je me suis dis que c' était mieux de démonter la partition et de poursuivre , plutôt que d' arrêter le script comme au départ , vu que 9 utilisateurs sur 10 ont la partition déjà montée ailleurs roll et que en fait , il n' y a pas lieux d' interrompre le processus pour cela , vu que même si la partition est déjà montée ailleurs , ce n' empêche pas le script de se dérouler normalement . ( en tout cas à ma connaissance )

nany a écrit :

Si, mais c’était déjà le cas avec Y|y|O|o|* (donc ce qui précédait l’astérisque était inutile).
D’ailleurs, ça valide aussi si on répond « non » en toutes lettres.

dans ce cas , ne vaudrait il pas mieux mettre :

case "$Rep2" in
  O|o|Y|y)
 	...
  ;;
  *)
  echo -e "Annulation par l’utilisateur !"
    exit 0

?
Mais ca ne validera pas si on met " rien " et entrée , si j' ai bien compris ?

Dernière modification par iznobe (Le 09/04/2025, à 10:13)

En ligne

#145 Le 09/04/2025, à 10:27

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

ok , je pense avoir trouvé la solution :

#!/bin/bash

label() {
  local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

  while [ -z "$Label" ]; do
    echo -n "Choisissez l’étiquette (LABEL) de votre partition de données, elle doit être UNIQUE et ne pas contenir d’espace, d’accent, de caractères spéciaux et au maximum 16 caractères : "
    read -r Label
    if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
      echo "Le nom de votre étiquette comporte une espace, un accent ou un caractère spécial ou plus de 16 caractères !"
      unset Label
    fi
  done
  for (( n=0; n<"$nbDev"; n++ )); do # étiquette déjà utilisée ?
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 7
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext|ntfs" \
{
j=0 ;
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
  echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
  read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
  if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif non nul
    echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
    unset PartNum
  elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
    echo "Votre choix doit être compris entre 1 et $nbDev."
    unset PartNum
  fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
  echo "La partition « $Part » n’a pas d’étiquette."
  label
else
  echo "La partition « $Part » a l’étiquette « $PartLabel »."
  echo -n "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] "
  read -r Rep
  case "$Rep" in
    N|n)
      Label="$PartLabel"
    ;;
    O|o|Y|y|'')
      label
    ;;
	*)
	echo -n "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n]"
	read -r Rep
	;;
  esac
fi

echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » ? [O/n] "
read -r Rep2

case "$Rep2" in
  O|o|Y|y|'')
    if [ ! -e "$Part" ]; then # vérification que la partition existe bien 
      echo -e "La partition « $Part » n’existe pas !"
      exit 1
    fi
    if [ "$PartFstype" != ext4 ] && [ "$PartFstype" != ext3 ] && [ "$PartFstype" != ext2 ] && [ "$PartFstype" != ntfs ]; then # vérifier qu’elle est bien formatée en ext ou ntfs
      echo -e "La partition « $Part » n’est pas au bon format !"
      exit 2
    fi
    if grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # vérifier si la ligne existe dans le fstab 
      echo -e "Une partition avec étiquette « $Label » est déjà traitée dans le fichier /etc/fstab, rien n’a donc été modifié !"
      exit 3
    fi
    if grep -q "^$Part" /etc/mtab; then # vérifier si la partition est déjà montée
      echo -e "La partition « $Part » est déjà montée !"
      umount -v "$Part"
    fi
    if grep -q "$Label" /etc/fstab; then # vérifier si une étiquette du même nom existe dans le fstab
      echo -e "L’étiquette « $Label » est déjà utilisée dans le fstab !"
      exit 5
    fi
    if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then # PartUUID est déjà present dans fstab
      echo -e "L’UUID de la partition est déjà présent dans le fstab !"
      exit 6
    fi

    # construction des éléments :
    if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" || "$PartFstype" == "ext2" ]]; then
      echo " FSTYPE=$PartFstype"
      #e2label "$Part" "$Label"
      #echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
    elif [[ "$PartFstype" == "ntfs"  ]]; then
      echo " FSTYPE=$PartFstype"
      #ntfslabel  "$Part" "$Label"
      #echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
      #echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
    fi
    #mkdir /media/"$Label" 2>/dev/null
    #systemctl daemon-reload
    #mount -a 2>/dev/null
    #mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

    if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
      echo "Script pour montage de partition de données terminé avec succès !"
      echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
    fi
	;;
	N|n)
 	  echo -e "Annulation par l’utilisateur !"
    exit 0
  ;;
    *)
	echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » ? [O/n] "
	read -r Rep2
	;;
	
esac

j' ai modifié pour les 2 cases .

ha ben , en fait non mad , il prend bien en compte , mais ne repart pas au debut du " case " ...

Dernière modification par iznobe (Le 09/04/2025, à 10:30)

En ligne

#146 Le 09/04/2025, à 10:50

geole

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour iznobe
Tests réalisés avec cette version de ton script.    J'ai décommenté quelques lignes

a@b:/tmp$ cat part_data.sh
#!/bin/bash

label() {
  local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

  while [ -z "$Label" ]; do
    echo -n "Choisissez l’étiquette (LABEL) de votre partition de données, elle doit être UNIQUE et ne pas contenir d’espace, d’accent, de caractères spéciaux et au maximum 16 caractères : "
    read -r Label
    if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
      echo "Le nom de votre étiquette comporte une espace, un accent ou un caractère spécial ou plus de 16 caractères !"
      unset Label
    fi
  done
  for (( n=0; n<"$nbDev"; n++ )); do # étiquette déjà utilisée ?
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 7
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext|ntfs" \
{
j=0 ;
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
  echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
  read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
  if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif non nul
    echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
    unset PartNum
  elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
    echo "Votre choix doit être compris entre 1 et $nbDev."
    unset PartNum
  fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
  echo "La partition « $Part » n’a pas d’étiquette."
  label
else
  echo "La partition « $Part » a l’étiquette « $PartLabel »."
  echo -n "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] "
  read -r Rep
  case "$Rep" in
    N|n)
      Label="$PartLabel"
    ;;
    *)
      label
    ;;
  esac
fi

echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » ? [O/n] "
read -r Rep2

case "$Rep2" in
  N|n)
 	  echo -e "Annulation par l’utilisateur !"
    exit 0
  ;;
  *)
    if [ ! -e "$Part" ]; then # vérification que la partition existe bien 
      echo -e "La partition « $Part » n’existe pas !"
      exit 1
    fi
    if [ "$PartFstype" != ext4 ] && [ "$PartFstype" != ext3 ] && [ "$PartFstype" != ext2 ] && [ "$PartFstype" != ntfs ]; then # vérifier qu’elle est bien formatée en ext ou ntfs
      echo -e "La partition « $Part » n’est pas au bon format !"
      exit 2
    fi
    if grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # vérifier si la ligne existe dans le fstab 
      echo -e "Une partition avec étiquette « $Label » est déjà traitée dans le fichier /etc/fstab, rien n’a donc été modifié !"
      exit 3
    fi
    if grep -q "^$Part" /etc/mtab; then # vérifier si la partition est déjà montée
      echo -e "La partition « $Part » est déjà montée !"
      umount -v "$Part"
      #exit 4
    fi
    if grep -q "$Label" /etc/fstab; then # vérifier si une étiquette du même nom existe dans le fstab
      echo -e "L’étiquette « $Label » est déjà utilisée dans le fstab !"
      exit 5
    fi
    if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then # PartUUID est déjà present dans fstab
      echo -e "L’UUID de la partition est déjà présent dans le fstab !"
      exit 6
    fi

    # construction des éléments :
    if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" || "$PartFstype" == "ext2" ]]; then
      echo " FSTYPE=$PartFstype"
      e2label "$Part" "$Label"
      echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
    elif [[ "$PartFstype" == "ntfs"  ]]; then
      echo " FSTYPE=$PartFstype"
      ntfslabel  "$Part" "$Label"
     echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
     echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
    fi
    mkdir /media/"$Label" 2>/dev/null
    systemctl daemon-reload
    mount -a 2>/dev/null
    mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

    if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
      echo "Script pour montage de partition de données terminé avec succès !"
      echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
    fi
  ;;
esac
a@b:/tmp$ 

Je n'avais pas fait gaffe que tu mettais deux fois le montage NTFS. j''ai laissé commenté la création de la corbeille.
En voici le résultat

lsblk -fe7 /dev/sdd
NAME    FSTYPE            FSVER LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdd                                                                                           
......
├─sdd10 ext4              1.0   TESText4  a610cb2d-c4c3-472e-bbd3-821f947a7735  907,4M     0% /media/TESText4
├─sdd11 ext3              1.0   TESText3  0a635076-752c-4677-a1f7-3c86f0e827ff  923,4M     0% /media/TESText3
├─sdd12 ext2              1.0   TESText2  c62eea87-2ec3-4b9d-9634-90d35f09aa32  955,4M     0% /media/TESText2
├─sdd13 ntfs                    TESTntfs1 626EF37C5393234B                     1018,4M     1% /media/TESTntfs1
└─sdd14 ntfs                    TESTntfs2 153D4BA3118EA6E2                     1018,4M     1% /media/TESTntfs2
a@b:/tmp$ mount |tail 
......
/dev/sdd10 on /media/TESText4 type ext4 (rw,relatime)
/dev/sdd11 on /media/TESText3 type ext3 (rw,relatime)
/dev/sdd12 on /media/TESText2 type ext2 (rw,relatime)
/dev/sdd13 on /media/TESTntfs1 type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)
/dev/sdd14 on /media/TESTntfs2 type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)

Après utilisation de la seconde partition en NTFS, la corbeille est automatiquement créée

ls -als /media/TESTntfs1
total 8
4 drwxrwxrwx  1 a    a    4096 avril  9 10:19 .
4 drwxr-xr-x 23 root root 4096 avril  9 10:19 ..
0 drwxrwxrwx  1 a    a       0 avril  9 10:19 a-TESTntfs1

 ls -al/media/TESTntfs2
total 8
4 drwxrwxrwx  1 a    a    4096 avril  9 10:24 .
4 drwxr-xr-x 23 root root 4096 avril  9 10:19 ..
0 drwxrwxrwx  1 a    a     144 avril  9 10:23 a-TESTntfs2
0 drwxrwxrwx  1 a    a     240 avril  9 10:24 .Trash-1000
a@b:/media/TESTntfs2$ ls -al /media/TESTntfs2/.Trash-1000/files
total 1
0 drwxrwxrwx 1 a a 152 avril  9 10:24 .
0 drwxrwxrwx 1 a a 240 avril  9 10:24 ..
1 -rwxrwxrwx 1 a a 435 nov.  18  2023 Iventoy.txt
 

Je te donne un avis sur NTFS3
   - Permet d'accéder aux fichiers compressés de windows. Donc certainement nécessaire.
   - On voit souvent  plein de  montages NTFS3 compliqués
   - Je considère que NTFS3 est buggé.. Il m'est arrivé un gros problème.   Dans mon portable, il y a deux windows.   
             - Le premier C: est monté  en NTFS3
             - Le second C: est monté en NTFS
            - Le premier windows s'est trouvé cassé deux fois avec obligation de restauration. Sans que je comprenne pourquoi. Je soupcçonne sans preuve NTFS3

Je relance le test avec uniquement NTFS.
J'ai du virer sys_immutable pour avoir le droit d'écrire.

a@b:~$ tail -1 /etc/fstab
LABEL=TESTntfs3 /media/TESTntfs3 ntfs3 defaults,nofail,x-gvfs-show,nohidden,uid=1000,gid=1000
a@b:~$ mount |tail -1
/dev/sdd15 on /media/TESTntfs3 type ntfs3 (rw,relatime,uid=1000,gid=1000,nohidden,iocharset=utf8,x-gvfs-show)
a@b:~$ 
a@b:~$ ls -al /media/TESTntfs3
total 8
drwxrwxrwx  1 a    a    4096 avril  9 11:16 .
drwxr-xr-x 25 root root 4096 avril  9 11:03 ..
drwxr-xr-x  1 a    a       0 avril  9 11:15 a-TESTntfs3
drwx------  1 a    a       0 avril  9 11:16 .Trash-1000
a@b:~$ ls -al /media/TESTntfs3/.Trash-1000
total 4
drwx------ 1 a a    0 avril  9 11:16 .
drwxrwxrwx 1 a a 4096 avril  9 11:16 ..
drwx------ 1 a a    0 avril  9 11:16 files
drwx------ 1 a a    0 avril  9 11:16 info
a@b:~$ ls -al /media/TESTntfs3/.Trash-1000/files
total 4
drwx------ 1 a a   0 avril  9 11:16 .
drwx------ 1 a a   0 avril  9 11:16 ..
-rwxrwxrwx 1 a a 435 nov.  18  2023 Iventoy.txt
a@b:~$ 

Dernière modification par geole (Le 09/04/2025, à 11:20)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#147 Le 09/04/2025, à 12:19

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Salut et merci geole pour le test wink
j' avais mis 2 lignes pour le montage NTFS , ne sachant pas trop quoi mettre comme options dedans vu que la question portait sur cela aussi .
du coup j ' ai modifié en ne laissant que la plus complete , version ntfs3  et enlevé l ' option " immuable " .

je suppose que  le chmod / chown de la corbeille sur du NTFS est donc inutile .

Bref , voici le " nouveau " script  avec boucle infinie pour les questions + simplifications du code pour celles-ci :
l' indentation n' est probablement pas correcte , je modifierais avant d' injecter dans le 1er message si besoin .

#!/bin/bash

label() {
  local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

  while [ -z "$Label" ]; do
    echo -n "Choisissez l’étiquette (LABEL) de votre partition de données, elle doit être UNIQUE et ne pas contenir d’espace, d’accent, de caractères spéciaux et au maximum 16 caractères : "
    read -r Label
    if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
      echo "Le nom de votre étiquette comporte une espace, un accent ou un caractère spécial ou plus de 16 caractères !"
      unset Label
    fi
  done
  for (( n=0; n<"$nbDev"; n++ )); do # étiquette déjà utilisée ?
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 7
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext|ntfs" \
{
j=0 ;
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
  echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
  read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
  if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif non nul
    echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
    unset PartNum
  elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
    echo "Votre choix doit être compris entre 1 et $nbDev."
    unset PartNum
  fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
  echo "La partition « $Part » n’a pas d’étiquette."
  label
else
  echo "La partition « $Part » a l’étiquette « $PartLabel »."
  while true; do
    read -p "Voulez-vous changer l’étiquette de la partition « $Part » ? [o/n] " -n 1 -r
    if [[ "$REPLY" =~ ^[YyOo'']$ ]]; then
      label
	  break
    elif [[ "$REPLY" =~ ^[N|n]$ ]]; then
      Label="$PartLabel"
	  break
    fi
  done
fi

while true; do
  read -p "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » ? [o/n] " -n 1 -r
  echo
  if [[ "$REPLY" =~ ^[YyOo'']$ ]]; then
	if [ ! -e "$Part" ]; then # vérification que la partition existe bien 
      echo -e "La partition « $Part » n’existe pas !"
      exit 1
    fi
    if [ "$PartFstype" != ext4 ] && [ "$PartFstype" != ext3 ] && [ "$PartFstype" != ext2 ] && [ "$PartFstype" != ntfs ]; then # vérifier qu’elle est bien formatée en ext ou ntfs
      echo -e "La partition « $Part » n’est pas au bon format !"
      exit 2
    fi
    if grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # vérifier si la ligne existe dans le fstab 
      echo -e "Une partition avec étiquette « $Label » est déjà traitée dans le fichier /etc/fstab, rien n’a donc été modifié !"
      exit 3
    fi
    if grep -q "^$Part" /etc/mtab; then # vérifier si la partition est déjà montée
      echo -e "La partition « $Part » est déjà montée !"
      umount -v "$Part"
    fi
    if grep -q "$Label" /etc/fstab; then # vérifier si une étiquette du même nom existe dans le fstab
      echo -e "L’étiquette « $Label » est déjà utilisée dans le fstab !"
      exit 4
    fi
    if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then # PartUUID est déjà present dans fstab
      echo -e "L’UUID de la partition est déjà présent dans le fstab !"
      exit 5
    fi

    # construction des éléments :
    if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" || "$PartFstype" == "ext2" ]]; then
      echo " FSTYPE=$PartFstype"
      #e2label "$Part" "$Label"
      #echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
    elif [[ "$PartFstype" == "ntfs"  ]]; then
      echo " FSTYPE=$PartFstype"
      #ntfslabel  "$Part" "$Label"
      #echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
    fi
    #mkdir /media/"$Label" 2>/dev/null
    #systemctl daemon-reload
    #mount -a 2>/dev/null
    #mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
    #mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
    #chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

    if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
      echo "Script pour montage de partition de données terminé avec succès !"
      echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
	  break
    fi
	
  elif [[ "$REPLY" =~ ^[N|n]$ ]]; then
    echo -e "Annulation par l’utilisateur !"
    exit 0
  fi
done

En ligne

#148 Le 09/04/2025, à 12:25

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

ce n' empêche pas le script de se dérouler normalement . ( en tout cas à ma connaissance )

Pas dans le cas de mon test : partition déjà inscrite dans le fstab avec la référence de l’UUID (d’ailleurs le démontage renvoie une erreur comme quoi la cible est active).




iznobe a écrit :

ok , je pense avoir trouvé la solution :

ha ben , en fait non mad , il prend bien en compte , mais ne repart pas au debut du " case " ...

Dans ce cas, il faut remettre les boucles while en les fermant aux bons endroits :

#!/bin/bash

label() {
  local rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"

  while [ -z "$Label" ]; do
    echo -n "Choisissez l’étiquette (LABEL) de votre partition de données, elle doit être UNIQUE et ne pas contenir d’espace, d’accent, de caractères spéciaux et au maximum 16 caractères : "
    read -r Label
    if [[ "$Label" =~ $rgx || "${#Label}" -gt 16 ]]; then
      echo "Le nom de votre étiquette comporte une espace, un accent ou un caractère spécial ou plus de 16 caractères !"
      unset Label
    fi
  done
  for (( n=0; n<"$nbDev"; n++ )); do # étiquette déjà utilisée ?
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 7
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit
fi

$(lsblk -no path,label,fstype  |
awk -vi=-1 'BEGIN { print "declare -A ListPart" } \
$NF ~ "ext|ntfs" \
{
j=0 ;
if ($2 ~ /^ext[2-4]$/ || $2 ~ /^ntfs$/) 
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]=""\nListPart["i","++j"]="$2 }
else
{ print "ListPart["++i","j"]="$1"\nListPart["i","++j"]="$2"\nListPart["i","++j"]="$3 }
}')

nbDev=$(( "${#ListPart[@]}"/3 ))

for (( n=0; n<nbDev; n++ )); do
  echo "$(( n+1 )) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
done

while [ -z "$PartNum" ]; do
  read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
  if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]]; then # Si la réponse n’est pas un entier positif non nul
    echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
    unset PartNum
  elif ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas dans le choix proposé
    echo "Votre choix doit être compris entre 1 et $nbDev."
    unset PartNum
  fi
done

Part="${ListPart[$(( PartNum-1 )),0]}"
PartLabel="${ListPart[$(( PartNum-1 )),1]}"
PartFstype="${ListPart[$(( PartNum-1 )),2]}"

if [[ -z "$PartLabel" ]]; then
  echo "La partition « $Part » n’a pas d’étiquette."
  label
else
  echo "La partition « $Part » a l’étiquette « $PartLabel »."
  while [ -z "$Rep" ]; do
    echo -n "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] "
    read -r Rep
    case "$Rep" in
      N|n)
        Label="$PartLabel"
      ;;
      Y|y|O|o|"")
        label
        break
      ;;
      *)
        unset Rep
      ;;
    esac
  done
fi

while [ -z "$Rep2" ]; do
  echo -n "Voulez-vous procéder au montage maintenant pour la partition « $Part » en y mettant pour étiquette « $Label » ? [O/n] "
  read -r Rep2

  case "$Rep2" in
    N|n)
   	  echo -e "Annulation par l’utilisateur !"
      exit 0
    ;;
    Y|y|O|o|"")
      if [ ! -e "$Part" ]; then # vérification que la partition existe bien 
        echo -e "La partition « $Part » n’existe pas !"
        exit 1
      fi
      if [ "$PartFstype" != ext4 ] && [ "$PartFstype" != ext3 ] && [ "$PartFstype" != ext2 ] && [ "$PartFstype" != ntfs ]; then # vérifier qu’elle est bien formatée en ext ou ntfs
        echo -e "La partition « $Part » n’est pas au bon format !"
        exit 2
      fi
      if grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # vérifier si la ligne existe dans le fstab 
        echo -e "Une partition avec étiquette « $Label » est déjà traitée dans le fichier /etc/fstab, rien n’a donc été modifié !"
        exit 3
      fi
      if grep -q "^$Part" /etc/mtab; then # vérifier si la partition est déjà montée
        echo -e "La partition « $Part » est déjà montée !"
        umount -v "$Part"
      fi
      if grep -q "$Label" /etc/fstab; then # vérifier si une étiquette du même nom existe dans le fstab
        echo -e "L’étiquette « $Label » est déjà utilisée dans le fstab !"
        exit 5
      fi
      if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then # PartUUID est déjà present dans fstab
        echo -e "L’UUID de la partition est déjà présent dans le fstab !"
        exit 6
      fi

      # construction des éléments :
      echo " FSTYPE=$PartFstype"
      if [[ "$PartFstype" == "ext4" || "$PartFstype" == "ext3" || "$PartFstype" == "ext2" ]]; then
        #e2label "$Part" "$Label"
        #echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
        return
      elif [[ "$PartFstype" == "ntfs"  ]]; then
        #ntfslabel  "$Part" "$Label"
        #echo "LABEL=$Label /media/$Label ntfs defaults,rw,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
        #echo "LABEL=$Label /media/$Label ntfs3 defaults,nofail,x-gvfs-show,nohidden,sys_immutable,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
        return
      fi
      #mkdir /media/"$Label" 2>/dev/null
      #systemctl daemon-reload
      #mount -a 2>/dev/null
      #mkdir /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
      #chown "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label" 2>/dev/null
      #mkdir /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
      #chown "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null
      #chmod 700 /media/"$Label"/.Trash-"$SUDO_UID" 2>/dev/null

      if [ -e /media/"$Label"/.Trash-"$SUDO_UID" ]; then
        echo "Script pour montage de partition de données terminé avec succès !"
        echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
      fi
      break
    ;;
    *)
      unset Rep2
    ;;
  esac
done

[edit]Ah ben tu as fait des modifications entre temps.[/edit]

Dernière modification par nany (Le 09/04/2025, à 12:28)

Hors ligne

#149 Le 09/04/2025, à 12:34

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

oui je trouve que c' est finalement plus " abordable " et lisible comme cela . j ' espere juste ne pas avoir oublié de break roll
boucle infinie + break pour sortir en cas de reponse attendue .


Faut que je regarde en détail pour cette histoire de partition deja montée .

tu avais choisie une partition systeme peut etre  ( ou /home )? vu qu on a pas encore traité le cas ...
sauf que je ne vois pas trop comment ejecter tout les cas possibles de l ' enumeration des partitions . ( /boot et touti cuenti )

Dernière modification par iznobe (Le 09/04/2025, à 12:38)

En ligne

#150 Le 09/04/2025, à 12:58

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

je trouve que c' est finalement plus " abordable " et lisible comme cela .

Bof, je préfère ma version en conservant les case.
Et, non, tu n’as pas oublié de break mais le dernier devrait être après le if/fi au lieu d’être à l’intérieur.





iznobe a écrit :

tu avais choisie une partition systeme peut etre  ( ou /home )?

Une partition de données montée dans /media/data avec des liens qui pointent vers Documents etc.
Le message est : « umount: /media/data: la cible est active. »

Hors ligne