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.

#176 Le 10/04/2025, à 22:07

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

nany a écrit :

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 .

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)

Hors ligne

#179 Le 11/04/2025, à 16:25

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

j ' ai ajouté aussi de posé la question à l' utilisateur , si il veut annuler ou poursuivre l ' opération

*somn emplacement




iznobe a écrit :

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 wink

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)

Hors ligne

#182 Le 15/04/2025, à 17:33

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour,



iznobe a écrit :

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 tongue

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

Hors ligne

#184 Le 15/04/2025, à 17:42

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

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.

iznobe a écrit :

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:~$
nany a écrit :

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)

Hors ligne

#186 Le 15/04/2025, à 19:23

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

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

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

iznobe a écrit :

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.




iznobe a écrit :
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

krodelabestiole a écrit :

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

nany a écrit :
iznobe a écrit :

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 mad

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 .


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

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)

Hors ligne

#191 Le 15/04/2025, à 21:51

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :
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 wink

il le laisse en "/tmp" tout seul de cette maniere avec cette commande . pile poil ce qu ' il fallait alors big_smile

Hors ligne

#193 Le 15/04/2025, à 22:47

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :
  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

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.

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,



RaphaelG a écrit :
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)…

RaphaelG a écrit :

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. wink

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 roll
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)

Hors ligne

#197 Le 16/04/2025, à 10:05

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

nany a écrit :

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 hmm )

et mise en place du script sur fofo + github .

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

Hors ligne

#199 Le 16/04/2025, à 10:36

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

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 roll 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 tongue

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

Hors ligne