#176 Le 10/04/2025, à 22:07
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
Attention, j’ai édité à 20:38:25, il faut mettre sort -rV.
Petites explications : on supprime ligne par ligne car on ne sait pas si les lignes vont être contiguës donc il faut trier par ordre décroissant des numéros (d’où l’importance du V) pout pouvoir supprimer de la dernière à la première ligne sinon il y aurait méprise dans les numéros des lignes.
l ' eternel soucis des decalages des numeros , bien sur .
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#177 Le 11/04/2025, à 11:32
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
Bonjour,
J’ai pensé à un autre truc cette nuit : gérer le cas où la même partition est montée sur plusieurs points de montage (eh oui, ça aussi, c’est possible).
Bon, c’est certainement rare mais il faut quand même en tenir compte.
Il faudrait alors mettre une boucle supplémentaire :
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 !"
PartMountPoints=$(grep "$Part" /etc/mtab | cut -d " " -f 2)
for pmp in $PartMountPoints; do
umount -v "$pmp"
Num=$(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rV)
for n in $Num; do
sed -i "${n}d" /etc/fstab
done
done
fi
(J’ai ajouté un s à PartMountPoint puisqu’il peut y avoir plusieurs points de montage.)
Hors ligne
#178 Le 11/04/2025, à 13:01
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
Bonjour nany , effectivement , et ce n' est pas si rare que ca de voir ce cas d' ailleurs .
j ' ai ajouté aussi de posé la question à l' utilisateur , si il veut annuler ou poursuivre l ' opération ( et mis dans le 1er message ) :
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 !"
while [ -z "$rep3" ]; do
echo -n "Voulez-vous démonter la partition « $Part » de som emplacement actuel et procéder au changement pour étiquette « $Label » ? [O/n] "
read -r Rep3
case "$Rep3" in
N|n)
echo -e "Annulation par l’utilisateur !"
exit 0
;;
Y|y|O|o|"")
PartMountPoints=$(grep "$Part" /etc/mtab | cut -d " " -f 2)
for pmp in $PartMountPoints; do
umount -v "$pmp"
Num=$(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rV)
for n in $Num; do
sed -i "${n}d" /etc/fstab
done
done
break
;;
*)
unset Rep3
;;
esac
done
fi
Sinon , ne pourrait on pas supprimer :
if [ ! -e "$Part" ]; then # vérification que la partition existe bien
echo -e "La partition « $Part » n’existe pas !"
exit 1
fi
if ! [[ "$PartFstype" =~ ext[2-4]|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
du fait qu ' on impose notre propre choix dans une liste existante de partition avec le format prédéfini ?
Dernière modification par iznobe (Le 11/04/2025, à 13:09)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#179 Le 11/04/2025, à 16:25
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
j ' ai ajouté aussi de posé la question à l' utilisateur , si il veut annuler ou poursuivre l ' opération
*somn emplacement
Sinon , ne pourrait on pas supprimer :
if [ ! -e "$Part" ]; then # vérification que la partition existe bien echo -e "La partition « $Part » n’existe pas !" exit 1 fi if ! [[ "$PartFstype" =~ ext[2-4]|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
du fait qu ' on impose notre propre choix dans une liste existante de partition avec le format prédéfini ?
Oui, ces conditions ne seront a priori jamais remplies.
Hors ligne
#180 Le 11/04/2025, à 16:54
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
modifs appliquées
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#181 Le 15/04/2025, à 17:12
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
Bonjour , petite simplification :
while [ -z "$PartNum" ]; do
read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]] || ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas un entier positif non nul ou Si la réponse n’est pas dans le choix proposé
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
fi
done
je me demandais , a ce meme propos , ne peut on pas ecrire une regex seulement qui verifie si si le nombre entré par l' utilisateur est compris entre 1 et $nbDev ?
ou , encore mieux , en se passant carrément de la regex ?
cela me semble suffisant non :
if ! (( 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
?
Dernière modification par iznobe (Le 15/04/2025, à 17:20)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#182 Le 15/04/2025, à 17:33
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
Bonjour,
cela me semble suffisant non :
if ! (( 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
?
En effet, oui.
[edit]
Ah ben non, le premier test avait été fait pour le cas où on saisit du texte ou n’importe quoi qui ne soit pas un nombre entier positif non nul.
[/edit]
Dernière modification par nany (Le 15/04/2025, à 17:35)
Hors ligne
#183 Le 15/04/2025, à 17:34
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
en fait non , car si on tape des lettres ou des caracteres speciaux ca renvoie une erreur
ceci a l ' air de fonctionner :
if [[ ! "$PartNum" =~ ^[1-9][0-9]?$[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
fi
pour un max de 999 partitions
Dernière modification par iznobe (Le 15/04/2025, à 17:37)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#184 Le 15/04/2025, à 17:42
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
en fait non , car si on tape des lettres ou des caracteres speciaux ca renvoie une erreur
Oui, j’ai édité mon message précédent entre temps.
ceci a l ' air de fonctionner
Je ne pense pas (il y a un dollar de trop et je ne comprends pas « |^"$nbDev"$ »).
Hors ligne
#185 Le 15/04/2025, à 18:07
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
ca m ' a l' air bon :
iznobe@iznobe-pc:~$ PartNum=100
iznobe@iznobe-pc:~$ nbDev=10
iznobe@iznobe-pc:~$ if [[ ! "$PartNum" =~ ^[1-9][0-9]?$[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
fi
Votre choix doit être un nombre entier compris entre 1 et 10.
iznobe@iznobe-pc:~$ PartNum=10
iznobe@iznobe-pc:~$ if [[ ! "$PartNum" =~ ^[1-9][0-9]?$[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
fi
iznobe@iznobe-pc:~$ PartNum=$*
iznobe@iznobe-pc:~$ if [[ ! "$PartNum" =~ ^[1-9][0-9]?$[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
fi
Votre choix doit être un nombre entier compris entre 1 et 10.
iznobe@iznobe-pc:~$
je ne comprends pas « |^"$nbDev"$ »).
de ce que j' ai compris , ca veut dire : ce qui precede " ou bien la valeur de nbDev en dernier " . en gros ca impose un " max " de façon détournée .
j ' ai trouvé ca là : https://stackoverflow.com/questions/134 … -1-and-100
qu ' en penses tu , je modifie ou pas ?
En tout cas mes tests sont concluants , ca fait bien , en un seul test , ce que faisait les 2 autres .
Dernière modification par iznobe (Le 15/04/2025, à 18:12)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#186 Le 15/04/2025, à 19:23
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
ce serait peut-être mieux de mettre ton script sur gitlab ou gittea ou framagit etc. pour sa maintenance et sa supervision ?
en plus ça permettrait de le télécharger et de l'exécuter en une ligne de commande si le but est de rester simple...
bash <(wget -qO- https://forge.tls/script.sh)
(avoir un readme pour le documenter etc.)
le script est là : https://github.com/iznobe/automount_par … rt_data.sh
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#187 Le 15/04/2025, à 20:06
- RaphaelG
Re : [ SCRIPT ] pour montage automatique partitions internes
if [[ ! "$PartNum" =~ ^[1-9][0-9]?$[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
Ca marche pas avec les nombres de 2 à 9 !
Par contre ta 1ère proposition du post #181 est OK.
#!/usr/bin/bash
nbDev=100
while [ -z "$PartNum" ]
do
read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]] || \
! (( PartNum > 0 && PartNum <= nbDev ))
then
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
else echo $PartNum
fi
done
Hors ligne
#188 Le 15/04/2025, à 20:24
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
j ' ai trouvé ca là : https://stackoverflow.com/questions/134 … -1-and-100
Dans ce cas :
if [[ ! "$PartNum" =~ ^[1-9][0-9]?[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev (1000 maximum)
Regex testée.
Mille, ça me paraît confortable (en cas de table de partitions de type MBR) sachant que la limite est de 128 pour un table GPT.
krodelabestiole a écrit :ce serait peut-être mieux de mettre ton script sur gitlab ou gittea ou framagit etc. pour sa maintenance et sa supervision ?
en plus ça permettrait de le télécharger et de l'exécuter en une ligne de commande si le but est de rester simple...
bash <(wget -qO- https://forge.tls/script.sh)
(avoir un readme pour le documenter etc.)
le script est là : https://github.com/iznobe/automount_par … rt_data.sh
ou pour sudo, voir https://serverfault.com/a/890417
Alors :
sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/automount_part_data/refs/heads/main/automount_part_data.sh)"
Hors ligne
#189 Le 15/04/2025, à 20:43
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
iznobe a écrit :j ' ai trouvé ca là : https://stackoverflow.com/questions/134 … -1-and-100
Dans ce cas :
if [[ ! "$PartNum" =~ ^[1-9][0-9]?[0-9]?$|^"$nbDev"$ ]]; then # Si la réponse n’est pas un entier positif non nul compris entre 1 et $nbDev (1000 maximum)
Regex testée.
Mille, ça me paraît confortable (en cas de table de partitions de type MBR) sachant que la limite est de 128 pour un table GPT.
En fait non, ça ne va pas. Ça matche des nombres supérieurs à $nbDev.
Il faut bien séparer les tests : la réponse est-elle un entier positif non nul ET est-elle comprise entre 1 et $nbDev ?
On en revient donc à ma proposition originelle :
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
Dernière modification par nany (Le 15/04/2025, à 20:53)
Hors ligne
#190 Le 15/04/2025, à 21:29
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
oui , je sais pas pourquoi , mais la regex ne va pas
j ' ai simplifié en :
while [ -z "$PartNum" ]; do
read -p "Choisissez le numéro correspondant à votre future partition de données : "
if [[ ! "$PartNum" =~ ^[1-9][0-9]*$ ]] || ! (( PartNum > 0 && PartNum <= nbDev )); then # Si la réponse n’est pas un entier positif non nul ou Si la réponse n’est pas dans le choix proposé
echo "Votre choix doit être un nombre entier compris entre 1 et $nbDev."
unset PartNum
fi
done
du coup .
sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/automount_part_data/refs/heads/main/automount_part_data.sh)"
quelle différence avec :
wget https://raw.githubusercontent.com/iznobe/automount_part_data/refs/heads/main/automount_part_data.sh && sudo bash automount_part_data.sh
Hors mis le fait qu ' il faut taper le mot de passe root avant bien sur .
Dernière modification par iznobe (Le 15/04/2025, à 21:45)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#191 Le 15/04/2025, à 21:51
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
nany a écrit :sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/automount_part_data/refs/heads/main/automount_part_data.sh)"
quelle différence avec :
wget https://raw.githubusercontent.com/iznobe/automount_part_data/refs/heads/main/automount_part_data.sh && sudo bash automount_part_data.sh
Ça exécute directement le script sans le copier sur le disque au préalable.
Hors ligne
#192 Le 15/04/2025, à 21:54
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
ha ok , superbe
il le laisse en "/tmp" tout seul de cette maniere avec cette commande . pile poil ce qu ' il fallait alors
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#193 Le 15/04/2025, à 22:47
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
read -p "Choisissez le numéro correspondant à votre future partition de données : "
Ça marche sans préciser le nom de la variable ?
read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
Et, tant que j’y suis, passons au pinaillage :
ligne 35, il y a deux espaces avant le pipe ;
ligne 98, indentation de sept espaces au lieu de six ;
pourquoi echo -e alors qu’il n’y a pas de backslash dans le texte et pourquoi echo -n "texte" puis read -r var plutôt qu’une seule ligne read -rp "texte" var ?
Hors ligne
#194 Le 16/04/2025, à 03:48
- RaphaelG
Re : [ SCRIPT ] pour montage automatique partitions internes
...... pourquoi echo -n "texte" puis read -r var plutôt qu’une seule ligne read -rp "texte" var ?
Cela pourrait être une combine pour ne pas avoir des lignes de code supérieures à 80 caractères.
Dans la série pinaillage, j'aime pas du tout les ';' derrière les if, while et for.
Hors ligne
#195 Le 16/04/2025, à 06:20
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
Bonjour,
nany a écrit :...... pourquoi echo -n "texte" puis read -r var plutôt qu’une seule ligne read -rp "texte" var ?
Cela pourrait être une combine pour ne pas avoir des lignes de code supérieures à 80 caractères.
Effectivement, ça peut être une raison (j’aime bien moi aussi me plier à cette limite de 80 caractères) mais ça ne semble pas être la préoccupation d’iznobe.
Et puis, si même Linus Torvalds trouve que c’est dépassé (article en français pour les anglophobes)…
Dans la série pinaillage, j'aime pas du tout les ';' derrière les if, while et for.
Oui, aussi. Et en même temps, chacun son style.
Dernière modification par nany (Le 16/04/2025, à 10:02)
Hors ligne
#196 Le 16/04/2025, à 09:35
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
Bonjour , pour les read echo , j ' avais vu , puis j' ai oublié de modifier
Merci pour le rappel .
j ' ai remis PartNum ...
Pour l' indentation , pas vu .
j ' actualise le github et le 1er post .
est ce qu ' il y a un interet à modifier aussi la ligne 52 en ajoutant l' option -r :
read -rp "Choisissez le numéro correspondant à votre future partition de données : " PartNum
vu que shellcheck me dit pour cette ligne :
Line 52:
read -p "Choisissez le numéro correspondant à votre future partition de données : " PartNum
^-- SC2162 (info): read without -r will mangle backslashes.
je viens de faire un simple test avec l ' option -r , ca à l' air de fonctionner normalement et plus de warning sur shellcheck .
Dernière modification par iznobe (Le 16/04/2025, à 10:10)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#197 Le 16/04/2025, à 10:05
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
pourquoi echo -e alors qu’il n’y a pas de backslash dans le texte… ?
Hors ligne
#198 Le 16/04/2025, à 10:11
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
echo tout court ? :
echo "Annulation par l’utilisateur !"
Peut etre devrais je aussi virer les commentaires en français ?
vu que les " echo " remplacent quasiment les commentaires .
EDIT :
echo -e => echo
read -p ... PartNum => read -rp .... PartNum
suppression de tous les com sauf un .
remise en place du bon double test pour le numero de partition ( je m' emmele les pinceaux a editer sur mon ordi , sur le github et sur le fofo )
et mise en place du script sur fofo + github .
Dernière modification par iznobe (Le 16/04/2025, à 10:24)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#199 Le 16/04/2025, à 10:36
- nany
Re : [ SCRIPT ] pour montage automatique partitions internes
echo tout court ?
Voui.
Hors ligne
#200 Le 16/04/2025, à 10:40
- iznobe
Re : [ SCRIPT ] pour montage automatique partitions internes
on est tout bon cette fois ?
chaque fois que je remet le nez dedans j ' en au pour 2 heures pendant 3 jours alors que je me dis , ba c' est juste une bricole , ca va prendre 30 secondes ...
en plus , je ne peux pas tester la journée , vu que je n' ai pas mon ordi sous la main ...
ou sur mon raspberry pi , mais pas comme je le voudrais , puis pas envie de le mettre en rad
Dernière modification par iznobe (Le 16/04/2025, à 10:42)
retour COMPLET et utilisable de commande | script montage partition ext4
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne