#1 Le 07/03/2025, à 17:42
- iznobe
script pour montage automatique partitions de données
Bonjour , je viens d ' écrire ce petit script qui permet de créer une partition de données , en quelques renseignements .
Merci a celles et ceux qui m' ont permis de finaliser proprement le script .
je remet le script au propre ici :
#!/bin/bash
if ((UID)); then
echo "Vous devez être super utilisateur pour lancer ce script ( essayez avec sudo )"
exit
fi
while [ -z "$Disk" ]; do
echo -n "Choisissez le DISQUE où est votre future partition de données ( déjà formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo -n "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
rgx="[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]"
while [ -z "$Label" ]; do
echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caractères spéciaux , 16 caractères maximum ) "
read 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
while [ -z "$Rep" ]; do
echo -n "Voulez-vous procéder au montage maintenant pour la partition $Disk$PartNum en y mettant pour étiquette : $Label[O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit 0
else
Bloc=/dev/$Disk$PartNum
# echo $? : trouve pas retourne 1 , trouve retourne 0
if [ ! -e "$Bloc" ]; then # vérification que la partition existe bien
echo -e "La partition $Bloc n' existe pas !"
exit 1
fi
if [ "$(lsblk -no fstype "$Bloc")" != ext4 ]; then # vérifier qu ' elle est bien formatée en ext4
echo -e "la partition $Bloc n' est pas formatée en EXT4 ! "
exit 2
fi
if grep -q "^LABEL=$Label /media/$Label ext4 defaults" /etc/fstab; then # verifier si la ligne existe dans le fstab
echo -e "la partition est déjà traitée dans le fichier /etc/fstab , rien n' a donc été modifié !"
exit 3
fi
if grep -q "^$Bloc" /etc/mtab; then # verifier si la partition est deja montée
echo -e "La partition est déjà montée !"
exit 4
fi
grep "$Label" /etc/fstab # verifier si une etiquette du meme nom existe dans le fstab
if [ "$?" -eq 0 ]; then
echo -e "L ' étiquette de la partition est déjà utilisée dans le fstab !"
exit 5
fi
PartUUID=$(lsblk -no uuid "$Bloc") # recuperer l ' UUID de la partition
grep "$PartUUID" /etc/fstab # PartUUID est deja present dans fstab
if [ "$?" -eq 0 ]; then
echo -e "L UUID de la partition est déjà présent dans le fstab !"
exit 6
else # construction des éléments :
e2label "$Bloc" "$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
systemctl daemon-reload
mount -a 2>/dev/null
mkdir -v /media/"$Label"/"$SUDO_USER"-"$Label"
chown -v "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$SUDO_UID"
chown -v "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID"
chmod -v 700 /media/"$Label"/.Trash-"$SUDO_UID"
echo " Script pour montage de partition de données terminé avec succès !"
fi
fi
Utilisation :
passer la commande suivante qui ouvrira votre gestionnaire de fichier , dans le fichier ouvert part_data.sh , coller tout le contenu du script ci-dessus dedans et sauvegarder .
name=part_data.sh; cd /tmp; touch $name; chmod +x $name; xdg-open $name
lancer le script et répondez aux questions :
sudo bash part_data.sh
et voilou
Dernière modification par iznobe (Aujourd'hui à 18:50)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#2 Le 07/03/2025, à 18:00
- Watael
Re : script pour montage automatique partitions de données
salut,
c'est quoi `input` ?
il y a une erreur sur Bloc = ... (pareil avec Fstype) et sur err.
il est vraiment pas fini ton script; tu n'aurais pas dû le publier dans cet état.
Dernière modification par Watael (Le 07/03/2025, à 18:08)
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 07/03/2025, à 18:10
- erresse
Re : script pour montage automatique partitions de données
c'est quoi `input` ?
J'ai trouvé ça...
user@Ubuntu-Mate:~$ x=`input`
La commande « input » n'a pas été trouvée, mais peut être installée avec :
sudo apt install yagiuda
user@Ubuntu-Mate:~$
Mais alors, on est assez loin d'un codage standard...
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#4 Le 07/03/2025, à 18:40
- iznobe
Re : script pour montage automatique partitions de données
Bonsoir , j ' ai edité pour corriger quelques erreurs du 1er jet que j' avais fait , yen avait pas mal d' ailleurs
Bien sur qu ' il n' est pas fini le script , c' était un 1er jet , à la va vite , je ne l' avais meme pas testé en l ' etat .
c' est bien pour ca que j' ai ajouté les différents points manquants en tête de script . ca ne peut pas fonctionner sans LABEL par exemple . mais va falloir traiter la réponse ... c' est surtout ce point là qui va me demander de la recherche .
problème ( facile à résoudre mais pas le temps de finir ) :
+
+
+
Certainement d' autres trucs , mais je finirai plus tard wink
Dernière modification par iznobe (Le 07/03/2025, à 18:54)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#5 Le 07/03/2025, à 19:18
- iznobe
Re : script pour montage automatique partitions de données
alors voici le " nouveau " script , toujours pas fonctionnel , mais j ' ai rajouter ( la base pour ) LABEL
reste encore a traiter :
+ la reponse donnée par l' utilisateur avec les contraintes liées au nom d' etiquette .
+ surement que le test pour verifier si la partition existe n' est pas correct .
+ verifier que la partition à traiter est actuellement vide avant de passer à l' action ( est-ce vraiment necessaire ? )
+ le traitement d ' erreur de la sortie du fstab
#!/bin/bash
while [ -z "$Disk" ]; do
echo "Choisissez le DISQUE où est votre future partition de données ( déja formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
while [ -z "$Label" ]; do
echo "Choisissez le l ' etiquette ( LABEL ) de votre partition de données : "
read Label
done
while [ -z "$Rep" ]; do
echo -e "Voulez-vous proceder à la transformation maintenant pour la partition $Disk$PartNum [O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit
else # verification que la partition existe bien .
if [ ! -e /dev/"$Disk""$PartNum" ]; then
echo -e "La partition /dev/"$Disk""$PartNum" n' existe pas ! "
exit
else # verification qu ' elle est bien formatée en ext4 :
echo -e "La partition /dev/"$Disk""$PartNum" existe : OK"
Fstype = lsblk -fe7 /dev/"$Disk""$PartNum" -o fstype
if [ "$Fstype" ! "ext4" ]; then
echo -e "la partition /dev/"$Disk""$PartNum" n' est pas formatée en EXT4 ! "
exit
else # contruction des elements :
e2label /dev/"$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" | sudo tee -a /etc/fstab
mount -a 2>err
if [ "$err" ! null ]; then
echo "erreur du montage de la partition !"
exit
else
systemctl daemon-reload
mkdir -v /media/"$Label"/"$USER"
chown -v "$USER": /media/"$Label"/"$USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$UID"
chown -v "$USER": /media/"$Label"/.Trash-"$UID"
chmod -v 700 /media/"$Label"/.Trash-"$UID"
fi
fi
fi
fi
Dernière modification par iznobe (Le 07/03/2025, à 19:21)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#6 Le 07/03/2025, à 21:08
- Watael
Re : script pour montage automatique partitions de données
pas le temps de finir
mais tu as le temps de le poster
je finirai plus tard
tu aurais dû le finir avant (#jeradote)
la prochaine fois, quoi ? tu mets que le shebang ?!
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#7 Le 07/03/2025, à 21:31
- iznobe
Re : script pour montage automatique partitions de données
ro , quel raleur
je l' ai posté , car je sais pertinemment que j' ai besoin d' aide pour finir le script ( et aussi que je n' avais pas de clé pour le mettre et l' emporter chez moi
)
poster sur le forum c ' est 10 sec , finir le script c' est 10 heures
c' est clair , et j' avoue qu ' il ne ressemblait pas à grand chose , vu que ce n' etait qu ' une ebauche ... en meme temps , j' ai fait ca en un temps record , vu que je n' ai rien testé
Bon comme je le pensais , je bute sur la partie avec les regex pour les conditions de l' ecriture correcte du LABEL .
j ' ai fait ca :
while [ -z "$Label" ]; do
echo "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
# caracteres speciaux :
if [[ "$Label" =~ \>\<\\:\"|?*\/ ]] ; then
echo " pas de caracteres speciaux !"
echo "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
# longueur de chaine :
elif [[ "${#Label}" -gt 15 ]]; then
echo " trop de cracteres !"
echo "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
else
read Label
fi
done
mais , ce que j ' aimerais , vous l' aurez compris , c ' est qu ' il re affiche le message d ' origine sans poursuivre le script .
j ' ai zappé quoi pour revenir a l' entrée de la boucle while ?
Comment j' ajoute un espace dans la regex des caracteres speciaux ? ( D ' ailleurs est elle au moins correcte cette regex ? ) un simple " \ " ? ou encore plus simple , juste un espace ?
PS : j ' ai remplacé " sudo tee -a /etc/fstab " par >> /etc/fstab . mais je ne l' ai pas encore mis , ce sera fait dans le prochain post du script
Dernière modification par iznobe (Le 07/03/2025, à 21:47)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#8 Le 07/03/2025, à 22:04
- Watael
Re : script pour montage automatique partitions de données
j ' ai zappé quoi pour revenir a l' entrée de la boucle while ?
unset Label ?
dans des cas comme celui-là, je préfère "jusqu'à vrai" plutôt que "tant que faux" :
rgx=caractèresSpéciaux
until test -n "$Label"
do
echo -n "entrez un label : "
read Label
if [[ $Label =~ $rgx || $Label -gt 15 ]]
then
>&2 echo erreur...
unset Label
fi
done
/!\ pas testé !
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#9 Le 08/03/2025, à 00:19
- sputnick
Re : script pour montage automatique partitions de données
Faut prendre l'habitude de passer ses scripts dans https://shellcheck.net ou en ligne de commande.
Surtout dans la partie scripts/trucs/astuces.
$ shellcheck
No files specified.
Usage: shellcheck [OPTIONS...] FILES...
-a --check-sourced Include warnings from sourced files
-C[WHEN] --color[=WHEN] Use color (auto, always, never)
-i CODE1,CODE2.. --include=CODE1,CODE2.. Consider only given types of warnings
-e CODE1,CODE2.. --exclude=CODE1,CODE2.. Exclude types of warnings
-f FORMAT --format=FORMAT Output format (checkstyle, diff, gcc, json, json1, quiet, tty)
--list-optional List checks disabled by default
--norc Don't look for .shellcheckrc files
-o check1,check2.. --enable=check1,check2.. List of optional checks to enable (or 'all')
-P SOURCEPATHS --source-path=SOURCEPATHS Specify path when looking for sourced files ("SCRIPTDIR" for script's dir)
-s SHELLNAME --shell=SHELLNAME Specify dialect (sh, bash, dash, ksh)
-S SEVERITY --severity=SEVERITY Minimum severity of errors to consider (error, warning, info, style)
-V --version Print version information
-W NUM --wiki-link-count=NUM The number of wiki links to show, when applicable
-x --external-sources Allow 'source' outside of FILES
--help Show this usage summary and exit
Qui veut faire quelque chose trouve un moyen, qui ne veut rien faire trouve une excuse. Proverbe arabe
https://sputnick.fr
Hors ligne
#10 Le 08/03/2025, à 03:15
- Watael
Re : script pour montage automatique partitions de données
le premier message a bien été posté dans la rubrique "Terminal, scripts et ligne de commandes".
ne voyant pas de question, et avant d'avoir lu le script, j'ai demandé à la modération de le mettre ici.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#11 Le 08/03/2025, à 05:04
- iznobe
Re : script pour montage automatique partitions de données
Bon , pas moyen de faire fonctionner cette satanée regex , passé des heures dessus pour rien !
quel est precisément la liste des caracteres alphanumeriques ? par exemeple , est -ce que le / * \ ? < > en font parti ?
#!/bin/bash
while [ -z "$Disk" ]; do
echo "Choisissez le DISQUE où est votre future partition de données ( déja formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
#rgx=caractèresSpéciaux # \>\<\\:\"|?*\/
#until test -n "$Label"; do
# rgx= '[:alnum:]+'
# echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
# read Label
# while [[ ! "$Label" =~ "$rgx" || ${#Label} -gt 15 ]]; do
# echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
# echo "erreur... choissisez a nouveau :"
# read Label
# done
#done
rgx='#^[:alnum:]$#'
rgx="[:alnum:]+"
echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
read Label
if [[ "$Label" =~ "$rgx" || ${#Label} -lt 16 ]]; then
continue
else
while
echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
echo "erreur... choisissez a nouveau :"
read Label
fi
while [ -z "$Rep" ]; do
echo -e "Voulez-vous proceder au traitement maintenant pour la partition $Disk$PartNum [O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit
else # verification que la partition existe bien .
if [ ! -e /dev/"$Disk""$PartNum" ]; then
echo -e "La partition /dev/"$Disk""$PartNum" n' existe pas ! "
exit
else # verification qu ' elle est bien formatée en ext4 :
echo -e "La partition /dev/"$Disk""$PartNum" existe : OK"
Fstype = lsblk -fe7 /dev/"$Disk""$PartNum" -o fstype
if [ "$Fstype" ! "ext4" ]; then
echo -e "la partition /dev/"$Disk""$PartNum" n' est pas formatée en EXT4 ! "
exit
else # contruction des elements :
e2label /dev/"$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
mount -a #2>err
if [ "$0" ! null ]; then
echo "erreur du montage de la partition !"
exit
else
systemctl daemon-reload
mkdir -v /media/"$Label"/"$USER"
chown -v "$USER": /media/"$Label"/"$USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$UID"
chown -v "$USER": /media/"$Label"/.Trash-"$UID"
chmod -v 700 /media/"$Label"/.Trash-"$UID"
fi
fi
fi
fi
un peu d' aide pour la regex serait la bienvenue svp .
Dernière modification par iznobe (Le 08/03/2025, à 10:57)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#12 Le 08/03/2025, à 11:57
- iznobe
Re : script pour montage automatique partitions de données
Bonjour , je ne sais pas pourquoi la regex : [:alnum:] ne fonctionne pas chez moi , sans :
#!/bin/bash
Label=""
rgx="[a-zA-Z0-9]"
until [[ "$Label" =~ $rgx ]]; do # || ${#Label} -gt 15
echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
read Label
done
iznobe@iznobe-pc:~/Scripts$ bash test.sh
Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : m
iznobe@iznobe-pc:~/Scripts$ bash test.sh
avec :
#!/bin/bash
Label=""
rgx="[:alnum:]"
until [[ "$Label" =~ $rgx ]]; do # || ${#Label} -gt 15
echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : "
read Label
done
iznobe@iznobe-pc:~/Scripts$ bash test.sh
Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) : m
Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) :
^C
iznobe@iznobe-pc:~/Scripts$ bash test.sh
que puis je bien faire qui ne va pas ?
quelqu ' un sait il ecrire une regex qui fait exactement :
( pas d' espace , d' accent ni de caracteres speciaux )
je vais quand meme pas me taper à la main , tous les accents tremas et je sais pas quoi encore ... doit bien y avoir une solution " simple " non ?
Dernière modification par iznobe (Le 08/03/2025, à 11:59)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#13 Le 08/03/2025, à 17:23
- iznobe
Re : script pour montage automatique partitions de données
Bonjour , quelqu ' un aurait une explication pour le fait que la variable $Lab est toujours vide dans un script , alors que dans l' autre ca fonctionne a merveille svp ?? ( unset ? )
script qui fonctionne :
#!/bin/bash
Label=$1
Part=$2
echo "Label original = $Label"
echo "block partition = $Part"
reg="([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]+)"
if [[ "$Label" =~ $reg && "${#Label}" -lt 16 ]]; then
Lab=${BASH_REMATCH[1]}
echo "Label : $Label | Lab : $Lab"
if [[ "$Label" != "$Lab" ]]; then
echo "Invalid label !"
echo "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , moins de 15 caracteres ) "
fi
else
echo "Invalid label !"
echo " le nom de votre etiquette comporte un trop grand nombre de caracteres !"
fi
script dans lequel $Lab reste desesperement vide alors que c' est le meme code de base
#!/bin/bash
while [ -z "$Disk" ]; do
echo -n "Choisissez le DISQUE où est votre future partition de données ( déja formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo -n "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
rgx="([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]+)"
while [ -z "$Label" ]; do
echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , 15 caracteres maximum ) "
read Label
if [[ "$Label" =~ $reg && "${#Label}" -lt 16 ]]; then
Lab=${BASH_REMATCH[1]}
echo "Label : $Label | Lab : $Lab ."
if [[ "$Label" != "$Lab" ]]; then
unset Label
echo "le nom de votre etiquette comporte un espace , un accent ou un caractere special !"
fi
else
unset Label
echo "le nom de votre etiquette comporte un trop grand nombre de caracteres !"
fi
done
exit
while [ -z "$Rep" ]; do
echo -n "Voulez-vous proceder au traitement maintenant pour la partition $Disk$PartNum [O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit
else # verification que la partition existe bien .
if [ ! -e /dev/"$Disk""$PartNum" ]; then
echo -e "La partition /dev/"$Disk""$PartNum" n' existe pas ! "
exit
else # verification qu ' elle est bien formatée en ext4 :
echo -e "La partition /dev/"$Disk""$PartNum" existe : OK"
Fstype = lsblk -fe7 /dev/"$Disk""$PartNum" -o fstype
if [ "$Fstype" ! "ext4" ]; then
echo -e "la partition /dev/"$Disk""$PartNum" n' est pas formatée en EXT4 ! "
exit
else # contruction des elements :
e2label /dev/"$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
mount -a #2>err
if [ "$0" ! null ]; then
echo "erreur du montage de la partition !"
exit
else
systemctl daemon-reload
mkdir -v /media/"$Label"/"$USER"
chown -v "$USER": /media/"$Label"/"$USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$UID"
chown -v "$USER": /media/"$Label"/.Trash-"$UID"
chmod -v 700 /media/"$Label"/.Trash-"$UID"
fi
fi
fi
fi
Dernière modification par iznobe (Le 08/03/2025, à 17:26)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#14 Le 08/03/2025, à 17:36
- erresse
Re : script pour montage automatique partitions de données
Dans ton 2eme script, tu testes =~ $reg alors que ta regex est $rgx, mais ça n'a peut-être rien à voir...
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#15 Le 08/03/2025, à 19:05
- iznobe
Re : script pour montage automatique partitions de données
arf , que je suis un boulet ...
Merci @erresse
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#16 Le 08/03/2025, à 19:57
- iznobe
Re : script pour montage automatique partitions de données
bon , il reste un dernier probleme a regler
lorsque j' execute le script avec :
sudo bash test-data.sh
la variable $USER est à root
iznobe@iznobe-pc:~/Scripts$ sudo bash test-data.sh
Choisissez le DISQUE où est votre future partition de données ( déja formatée en EXT4 ) : sda
Choisissez le NUMERO de votre future partition de données sur le disque : 3
Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , 15 caracteres maximum ) ok
Label : ok | Lab : ok .
Voulez-vous proceder au traitement maintenant pour la partition sda3 [O/n] ?o
La partition /dev/sda3 existe : OK
Fstype = ext4
mkdir: création du répertoire '/media/ok'
mkdir: impossible de créer le répertoire «/media/ok/root»: Le fichier existe
chown: impossible d'accéder à '/media/ok/root-ok': Aucun fichier ou dossier de ce nom
impossible de modifier l'appartenance de '/media/ok/root-ok' en root:root
mkdir: impossible de créer le répertoire «/media/ok/.Trash-0»: Le fichier existe
l'appartenance de '/media/ok/.Trash-0' est maintenue à root:root
le mode de '/media/ok/.Trash-0' a été conservé à 0700 (rwx------)
Script pour montage de partition de données terminer avec succés !
iznobe@iznobe-pc:~/Scripts$
Comment est ce que je peux corriger le tir ?
voici le script en cours d' utilisation :
#!/bin/bash
while [ -z "$Disk" ]; do
echo -n "Choisissez le DISQUE où est votre future partition de données ( déja formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo -n "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
rgx="([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]+)"
while [ -z "$Label" ]; do
echo -n "Choisissez l ' etiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caracteres speciaux , 15 caracteres maximum ) "
read Label
if [[ "$Label" =~ $rgx && "${#Label}" -lt 16 ]]; then
Lab=${BASH_REMATCH[1]}
echo "Label : $Label | Lab : $Lab ."
if [[ "$Label" != "$Lab" ]]; then
echo "le nom de votre etiquette comporte un espace , un accent ou un caractere special !"
unset Label
fi
else
echo "le nom de votre etiquette comporte un trop grand nombre de caracteres !"
unset Label
fi
done
while [ -z "$Rep" ]; do
echo -n "Voulez-vous proceder au traitement maintenant pour la partition $Disk$PartNum [O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit
else # verification que la partition existe bien .
if [ ! -e /dev/"$Disk""$PartNum" ]; then
echo -e "La partition /dev/"$Disk""$PartNum" n' existe pas ! "
exit
else # verification qu ' elle est bien formatée en ext4 :
Bloc=/dev/"$Disk""$PartNum"
echo -e "La partition $Bloc existe : OK"
Fstype=$(lsblk -n -o fstype "$Bloc")
echo "Fstype = $Fstype"
#Ext=ext4
if [ $(echo "$Fstype") != ext4 ]; then
echo -e "la partition "$Bloc" n' est pas formatée en EXT4 ! "
exit
else # contruction des elements :
e2label "$Bloc" "$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
mount -a 2>/dev/null
systemctl daemon-reload
mkdir -v /media/"$Label"/"$USER"
chown -v "$USER": /media/"$Label"/"$USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$UID"
chown -v "$USER": /media/"$Label"/.Trash-"$UID"
chmod -v 700 /media/"$Label"/.Trash-"$UID"
echo " Script pour montage de partition de données terminer avec succés !"
fi
fi
fi
Dernière modification par iznobe (Le 08/03/2025, à 19:59)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#17 Le 08/03/2025, à 20:13
- nany
Re : script pour montage automatique partitions de données
Bonjour,
Comment est ce que je peux corriger le tir ?
En remplaçant $USER par $SUDO_USER et $UID par $SUDO_UID.
Sinon :
Script pour montage de partition de données terminé avec succès !
Hors ligne
#18 Le 08/03/2025, à 20:20
- nany
Re : script pour montage automatique partitions de données
Et il reste des messages dans https://www.shellcheck.net/.
Hors ligne
#19 Le 08/03/2025, à 21:45
- iznobe
Re : script pour montage automatique partitions de données
Bonsoir @nany et merci
je viens donc de corriger le tir , il reste encore a incorporer dans la REGEX le cas ou il y a un / des espaces , ajouter l' utilisation de " - " et de " _ " , je n' ai pas réussi à faire .
j ' ai corrigé les accents .. ca à l' air de fonctionner a peu pres maintenant , merci
#!/bin/bash
while [ -z "$Disk" ]; do
echo -n "Choisissez le DISQUE où est votre future partition de données ( déjà formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo -n "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
rgx="([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]+)"
while [ -z "$Label" ]; do
echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caractères spéciaux , 15 caractères maximum ) "
read Label
if [[ "$Label" =~ $rgx && "${#Label}" -lt 16 ]]; then
Lab=${BASH_REMATCH[1]}
echo "Label : $Label | Lab : $Lab ."
if [[ "$Label" != "$Lab" ]]; then
echo "le nom de votre étiquette comporte un espace , un accent ou un caractère spécial !"
unset Label
fi
else
echo "le nom de votre étiquette comporte un trop grand nombre de caractères !"
unset Label
fi
done
while [ -z "$Rep" ]; do
echo -n "Voulez-vous procéder au traitement maintenant pour la partition $Disk$PartNum [O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit
else # vérification que la partition existe bien .
if [ ! -e /dev/"$Disk""$PartNum" ]; then
echo -e "La partition /dev/"$Disk""$PartNum" n' existe pas ! "
exit
else # vérification qu ' elle est bien formatée en ext4 :
Bloc=/dev/"$Disk""$PartNum"
echo -e "La partition $Bloc existe : OK"
Fstype=$(lsblk -n -o fstype "$Bloc")
echo "Fstype = $Fstype"
#Ext=ext4
if [ $(echo "$Fstype") != ext4 ]; then
echo -e "la partition "$Bloc" n' est pas formatée en EXT4 ! "
exit
else # construction des éléments :
e2label "$Bloc" "$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
mount -a 2>/dev/null
systemctl daemon-reload
mkdir -v /media/"$Label"/"$SUDO_USER"-"$Label"
chown -v "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$SUDO_UID"
chown -v "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID"
chmod -v 700 /media/"$Label"/.Trash-"$SUDO_UID"
echo " Script pour montage de partition de données terminé avec succès !"
fi
fi
fi
PS : pas eu le temps de regarder le site en question encore
Dernière modification par iznobe (Le 08/03/2025, à 21:46)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#20 Le 08/03/2025, à 22:08
- nany
Re : script pour montage automatique partitions de données
Ah oui, puisque tu utilises le script avec sudo, ça serait bien de tester en premier lieu que l’utilisateur est bien root.
j ' ai corrigé les accents
S’il n’y avait que ça.
Il y a un paquet d’espaces à supprimer (autour des apostrophes, dans les parenthèses…).
Dernière modification par nany (Le 09/03/2025, à 05:40)
Hors ligne
#21 Le 08/03/2025, à 22:20
- nany
Re : script pour montage automatique partitions de données
je ne sais pas pourquoi la regex : [:alnum:] ne fonctionne pas chez moi
Essaie [[:alnum:]].
Hors ligne
#22 Le 09/03/2025, à 00:38
- iznobe
Re : script pour montage automatique partitions de données
Alors voici , le script final ( enfin je pense ) :
#!/bin/bash
if ! id | grep -q "uid=0"; then
echo "Vous devez etre super utilisateur pour lancer ce script ( essayez avec sudo )"
exit 1
fi
while [ -z "$Disk" ]; do
echo -n "Choisissez le DISQUE où est votre future partition de données ( déjà formatée en EXT4 ) : "
read Disk
done
while [ -z "$PartNum" ]; do
echo -n "Choisissez le NUMERO de votre future partition de données sur le disque : "
read PartNum
done
rgx="([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_\-]+)"
while [ -z "$Label" ]; do
echo -n "Choisissez l ' étiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caractères spéciaux , 15 caractères maximum ) "
read Label
if [[ "$Label" =~ $rgx && "${#Label}" -lt 16 ]]; then
Lab=${BASH_REMATCH[1]}
echo "Label : $Label | Lab : $Lab ."
if [[ "$Label" != "$Lab" ]]; then
echo "le nom de votre étiquette comporte un espace , un accent ou un caractère spécial !"
unset Label
fi
else
echo "le nom de votre étiquette comporte un trop grand nombre de caractères !"
unset Label
fi
done
while [ -z "$Rep" ]; do
echo -n "Voulez-vous procéder au traitement maintenant pour la partition $Disk$PartNum [O/n] ?"
read Rep
done
if [ "$Rep" = "n" ]; then
echo -e "Annulation !"
exit 2
else # vérification que la partition existe bien .
Bloc=/dev/"$Disk""$PartNum"
if [ ! -e "$Bloc" ]; then
echo -e "La partition $Bloc n' existe pas ! "
exit 3
else # vérification qu ' elle est bien formatée en ext4 :
echo -e "La partition $Bloc existe : OK"
Fstype=$(lsblk -n -o fstype "$Bloc")
echo "Fstype = $Fstype"
if [ "$(echo "$Fstype")" != ext4 ]; then
echo -e "la partition $Bloc n' est pas formatée en EXT4 ! "
exit
else # construction des éléments :
e2label "$Bloc" "$Label"
mkdir -v /media/"$Label"
echo "LABEL=$Label /media/$Label ext4 defaults" >> /etc/fstab
mount -a 2>/dev/null
systemctl daemon-reload
mkdir -v /media/"$Label"/"$SUDO_USER"-"$Label"
chown -v "$SUDO_USER": /media/"$Label"/"$SUDO_USER"-"$Label"
mkdir /media/"$Label"/.Trash-"$SUDO_UID"
chown -v "$SUDO_USER": /media/"$Label"/.Trash-"$SUDO_UID"
chmod -v 700 /media/"$Label"/.Trash-"$SUDO_UID"
echo " Script pour montage de partition de données terminé avec succès !"
fi
fi
fi
iznobe a écrit :je ne sais pas pourquoi la regex : [:alnum:] ne fonctionne pas chez moi
Essaie [[:alnum:]].
Merci , je testerai ca demain .
Dernière modification par iznobe (Le 09/03/2025, à 01:10)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#23 Le 09/03/2025, à 01:15
- Watael
Re : script pour montage automatique partitions de données
if ((UID))
then
echo 'must be root'
sudo -l
exit 1
fi
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#24 Le 09/03/2025, à 06:28
- nany
Re : script pour montage automatique partitions de données
Bonjour,
nany a écrit :iznobe a écrit :je ne sais pas pourquoi la regex : [:alnum:] ne fonctionne pas chez moi
Essaie [[:alnum:]].
Merci , je testerai ca demain .
Vu ta dernière modif :
rgx="([[:alnum:]_\-]+)"
Hors ligne
#25 Le 09/03/2025, à 12:08
- iznobe
Re : script pour montage automatique partitions de données
Bonjour , oui , mais il me semble que cela accepte les caractères accentués , ce qu ' il ne faut pas ., pour cela que j ' ai énuméré l' alphabet à la place .
EDIT : alors avec les doubles crochets , cela fonctionne , effectivement , ils auraient quand même pu le spécifier sur les sites que je suis allé voir ...
Et effectivement , alors , les caractères accentués sont acceptés :
iznobe@iznobe-pc:~$ sudo bash ~/Scripts/test-data.sh
[sudo] Mot de passe de iznobe :
Choisissez le DISQUE où est votre future partition de données ( déjà formatée en EXT4 ) : sda
Choisissez le NUMERO de votre future partition de données sur le disque : 3
Choisissez l ' étiquette ( LABEL ) de votre partition de données ( pas d' espace , d' accent ni de caractères spéciaux , 15 caractères maximum ) é
Label : é | Lab : é .
iznobe@iznobe-pc:~$
Donc , en attendant de trouver mieux , je laisse la expression réguliere telle quelle .
Dernière modification par iznobe (Le 09/03/2025, à 12:16)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne