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.

#201 Le 16/04/2025, à 10:43

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

( je m' emmele les pinceaux a editer sur mon ordi , sur le github et sur le fofo hmm )

Attention, PartNum a à nouveau disparu (ligne 52) !

Il y a aussi des echo -e qui traînent encore (lignes 96, 100 et 104).

Dernière modification par nany (Le 16/04/2025, à 11:22)

Hors ligne

#202 Le 16/04/2025, à 18:36

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Heureusement que tu es là pour surveiller ce que je fais roll

j ' ai rectifié pour PartNum ( 52 ) , pas compris pourquoi il n' y est encore plus ...
j ' ai viré les -e lignes 96 et 100 , par contre pour la ligne 104 , j' ai un doute vu que $Part ca sera forcément : " /dev/quelquechose " non ?

#!/bin/bash

# ----------------------------------------------------------------------------
# "LICENCE BEERWARE" (Révision 42):
# <iznobe@forum.ubuntu-fr.org> a créé ce fichier. Tant que vous conservez cet avertissement,
# vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
# que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en
# retour.
# ----------------------------------------------------------------------------

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

  while [ -z "$Label" ]; do
    read -rp "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 : " 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
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 4
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit 0
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 -rp "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
  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
    read -rp "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] " Rep
    case "$Rep" in
      N|n)
        Label="$PartLabel"
        break
      ;;
      Y|y|O|o|"")
        label
        break
      ;;
      *)
        unset Rep
      ;;
    esac
  done
fi

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

  case "$Rep2" in
    N|n)
      echo "Annulation par l’utilisateur !"
      exit 1
    ;;
    Y|y|O|o|"")
      if grep -q "$Label" /etc/fstab; then
        echo "L’étiquette « $Label » est déjà utilisée dans le fstab !"
        exit 2
      fi
      if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then
        echo "L’UUID de la partition est déjà présent dans le fstab !"
        exit 3
      fi
      if grep -q "^$Part" /etc/mtab; then
        echo -e "La partition « $Part » est déjà montée !"
        while [ -z "$rep3" ]; do
          read -rp "Voulez-vous démonter la partition « $Part » de son emplacement actuel et procéder au changement pour étiquette « $Label » ? [O/n] " Rep3
          case "$Rep3" in
            N|n)
              echo "Annulation par l’utilisateur !"
              exit 1
            ;;
            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

      # construction des éléments :
      if [[ "$PartFstype" =~ ext[2-4] ]]; then
        e2label "$Part" "$Label"
        echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
      elif [[ "$PartFstype" == "ntfs"  ]]; then
        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 "-----------------------------------------------------------------"
        echo "Script pour montage de partition de données terminé avec succès !"
        echo ""
        echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
      else
        echo "erreur inconnue !"
        exit 10
      fi
      break
    ;;
    *)
      unset Rep2
    ;;
  esac
done

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

En ligne

#203 Le 16/04/2025, à 18:55

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Bon , quelquechose ne va pas dans le cas où la partition est déjà montée ...

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

En ligne

#204 Le 16/04/2025, à 19:31

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

par contre pour la ligne 104 , j' ai un doute vu que $Part ca sera forcément : " /dev/quelquechose " non ?

Et alors ? Il est où le backslash ?




iznobe a écrit :

Bon , quelquechose ne va pas dans le cas où la partition est déjà montée ...

Qu’est-ce qui ne va pas ? Je n’ai pas de moyen de tester.

Hors ligne

#205 Le 16/04/2025, à 19:39

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Bon en fait , c' est gnome et / ou le dash qui ne suivent pas et ca n' affiche pas la partition montée dans le dash ...

j ' ai mis un " sleep " ( pas confondre avec son homonyme français tongueet j' ai remis les doubles quotes à : enlevé de nouveau

for pmp in $PartMountPoints; do

et j' ai enlever aussi le -e de la ligne 104 , pas de soucis , oublier de le dire .

ce qui donne :

#!/bin/bash

# ----------------------------------------------------------------------------
# "LICENCE BEERWARE" (Révision 42):
# <iznobe@forum.ubuntu-fr.org> a créé ce fichier. Tant que vous conservez cet avertissement,
# vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
# que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en
# retour.
# ----------------------------------------------------------------------------

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

  while [ -z "$Label" ]; do
    read -rp "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 : " 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
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 4
    fi
  done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit 0
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 -rp "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
  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
    read -rp "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] " Rep
    case "$Rep" in
      N|n)
        Label="$PartLabel"
        break
      ;;
      Y|y|O|o|"")
        label
        break
      ;;
      *)
        unset Rep
      ;;
    esac
  done
fi

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

  case "$Rep2" in
    N|n)
      echo "Annulation par l’utilisateur !"
      exit 1
    ;;
    Y|y|O|o|"")
      if grep -q "$Label" /etc/fstab; then
        echo "L’étiquette « $Label » est déjà utilisée dans le fstab !"
        exit 2
      fi
      if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then
        echo "L’UUID de la partition est déjà présent dans le fstab !"
        exit 3
      fi
      if grep -q "^$Part" /etc/mtab; then
        echo "La partition « $Part » est déjà montée !"
        while [ -z "$rep3" ]; do
          read -rp "Voulez-vous démonter la partition « $Part » de son emplacement actuel et procéder au changement pour étiquette « $Label » ? [O/n] " Rep3
          case "$Rep3" in
            N|n)
              echo "Annulation par l’utilisateur !"
              exit 1
            ;;
            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
              sleep 1 # prise en compte du montage par le dash , sans delai , parfois la partition ne s' affiche pas .
              break
            ;;
            *)
            unset Rep3
            ;;
          esac
        done
      fi

      # construction des éléments :
      if [[ "$PartFstype" =~ ext[2-4] ]]; then
        e2label "$Part" "$Label"
        echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
      elif [[ "$PartFstype" == "ntfs"  ]]; then
        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 "-----------------------------------------------------------------"
        echo "Script pour montage de partition de données terminé avec succès !"
        echo ""
        echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
      else
        echo "erreur inconnue !"
        exit 10
      fi
      break
    ;;
    *)
      unset Rep2
    ;;
  esac
done

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

En ligne

#206 Le 16/04/2025, à 19:46

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

et j' ai remis les doubles quotes

Je mets ma main au feu que ça ne fonctionnera pas pour le cas de points de montage multiples.

Dernière modification par nany (Le 16/04/2025, à 19:49)

Hors ligne

#207 Le 16/04/2025, à 20:05

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

je teste ça desuite alors .

exact ... je re édite .

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

En ligne

#208 Le 16/04/2025, à 20:58

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

              PartMountPoints=( $(grep "$Part" /etc/mtab | cut -d ' ' -f 2) ) # ou readarray -t PartMountPoints < <(grep...)
              for pmp in "${PartMountPoints[@]}"; do

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#209 Le 16/04/2025, à 23:46

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Salut @Watael , cela cree un tableau associatif ?
ce qui evite de boucler dans boucle ?

En ligne

#210 Le 17/04/2025, à 00:24

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

non, c'est un tableau indexé.
et, non, puisque les deux boucles ne traitent pas les mêmes informations.
d'ailleurs :

              readarray -t PartMountPoints < <(grep "$Part" /etc/mtab | cut -d " " -f 2)
              for pmp in "${PartMountPoints[@]}"; do
                umount -v "$pmp"
                for numLine in $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rn) #on est sûr que la sortie ne peut être que des nombres.
                do
                  sed -i ${numLine}d /etc/fstab
                done
              done

pourquoi sort -rV ? il n'y a pas de version ici, seulement des nombres -> sort -rn

Dernière modification par Watael (Le 17/04/2025, à 00:27)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#211 Le 17/04/2025, à 00:35

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

pourquoi sort -rV ?

si ton fichier contient 4 lignes et que tu veux supprimer la ligne 1 puis la 4 et que tu commences par la 1 , que se passe t il ?
-r si j' ai bien suivi , c' est pour ordre inversé .
-V , c' est nany qui avait dit de l' ajouté aussi . je me rapelle plus trop pourquoi ...

Si tu supprimes la 4 , puis la 1 pas de soucis par contre .

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

En ligne

#212 Le 17/04/2025, à 00:43

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.

En ligne

#213 Le 17/04/2025, à 00:44

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

je n'ai rien contre le -r, c'est normal du supprimer ls lignes dans l'ordre inverse. wink

man sort a écrit :
       -V, --version-sort
              natural sort of (version) numbers within text

par exemple 1.1.4, 1.1.2 sont des numéros de version qui seront efficacement triés avec -V.
-n et -g effectuent tous les deux un tri numérique, mais je ne perçois pas la différence.

Dernière modification par Watael (Le 17/04/2025, à 00:44)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#214 Le 17/04/2025, à 00:56

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

mais, on peut s'en passer :

numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1) )
sed -i "$(printf '%dd;' "${numLines[@]}")" /etc/fstab

voire simplement :

sed -i '/'"$pmp"'/d' /etc/fstab

ou j'ai raté quelque chose ?

Dernière modification par Watael (Le 17/04/2025, à 01:00)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#215 Le 17/04/2025, à 01:15

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

un nombre , c' est forcément un numéro de version .

j ' ai  fait plusieurs fois des tests dont un encore tout à l ' heure avec 3 lignes dans le fstab concernant la meme partition .
ca a bien supprimé les 3 lignes en tout cas . mais je n' ai pas fait attention dans quel ordre ...


Aller je refais un test pour la peine roll

je met le montage de la partition dans le fstab à la main :

iznobe@iznobe-pc:~$ head -16 /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p8 during installation
UUID=dca54497-1ab2-4c12-bc82-53b817300288 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p3 during installation
UUID=C071-9050  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/sdc4 during installation
UUID=09e6bc69-3287-4694-aa3b-a72afae17c1f		none            swap    sw              0       0

/dev/disk/by-label/tuiy 	/mnt	ext4    defaults

iznobe@iznobe-pc:~$

en ligne 15 donc .

je l' ai aussi monté avant via le script . elle y est donc 2 fois , dans la toute derniere ligne du fstab .
resultat :

iznobe@iznobe-pc:~$ sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/iznobe/automount_part_data/refs/heads/main/automount_part_data.sh)"
1 ⇒ /dev/sda1   WD8   ext4
2 ⇒ /dev/sda2   SAUV   ext4
3 ⇒ /dev/sdb3   Data   ext4
4 ⇒ /dev/sdc1   WD8PRO1_P1   ext4
5 ⇒ /dev/sdc2   WD8PRO1_P2   ext4
6 ⇒ /dev/sdd1   WD8PRO2   ext4
7 ⇒ /dev/nvme0n1p1   windows_10   ntfs
8 ⇒ /dev/nvme0n1p2      ntfs
9 ⇒ /dev/nvme0n1p4      ntfs
10 ⇒ /dev/nvme0n1p5   LM_21_SSD   ext4
11 ⇒ /dev/nvme0n1p6   U_20.04_SSD   ext4
12 ⇒ /dev/nvme0n1p7   U_22.budgie_SSD   ext4
13 ⇒ /dev/nvme0n1p8   U_24.04_SSD   ext4
14 ⇒ /dev/nvme0n1p9   LM_SSD_NEW   ext4
15 ⇒ /dev/nvme0n1p10   DEBIAN_XFCE   ext4
16 ⇒ /dev/nvme0n1p11   Archlinux   ext4
17 ⇒ /dev/nvme0n1p12   tuiy   ext4
Choisissez le numéro correspondant à votre future partition de données : 17
La partition « /dev/nvme0n1p12 » a l’étiquette « tuiy ».
Voulez-vous changer l’étiquette de la partition « /dev/nvme0n1p12 » ? [O/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 : loki
Voulez-vous procéder au montage maintenant pour la partition « /dev/nvme0n1p12 » en y mettant pour étiquette « loki » ? [O/n] 
La partition « /dev/nvme0n1p12 » est déjà montée !
Voulez-vous démonter la partition « /dev/nvme0n1p12 » de son emplacement actuel et procéder au changement pour étiquette « loki » ? [O/n] 
umount: /media/tuiy démonté
umount: /mnt démonté
-----------------------------------------------------------------
Script pour montage de partition de données terminé avec succès !

Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/loki/iznobe-loki ».
iznobe@iznobe-pc:~$ 

il supprime la derniere ligne en premier , et la ligne 15 en dernier , c' est donc ok .





PS , il y a un soucis avec le test de  l ' etiquette  , faut que je le reprenne .

d' autre part , je me demande ( ca va encore complexifier ... ) , sil ne serait pas judicieux de demander ce qu ' il veut faire à l' utilisateur aussi dans le cas ou une etiquette ou un UUID es deja dans le fstab :

case "$Rep2" in
    N|n)
      echo "Annulation par l’utilisateur !"
      exit 1
    ;;
    Y|y|O|o|"")
      if grep -q "LABEL=$Label" /etc/fstab; then # verifier aussi avec disk/by/label ...
        echo "L’étiquette « $Label » est déjà utilisée dans le fstab !"
        exit 2
      fi
      if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then
        echo "L’UUID de la partition est déjà présent dans le fstab !"
        exit 3
      fi
      if grep -q "^$Part" /etc/mtab; then
        echo "La partition « $Part » est déjà montée !"
        while [ -z "$rep3" ]; do
          read -rp "Voulez-vous démonter la partition « $Part » de son emplacement actuel et procéder au changement pour étiquette « $Label » ? [O/n] " Rep3
          case "$Rep3" in
            N|n)
              echo "Annulation par l’utilisateur !"
              exit 1
            ;;
            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
              sleep 1 # prise en compte du montage par le dash , sans delai , parfois la partition ne s' affiche pas .
              break
            ;;
            *)
            unset Rep3
            ;;
          esac
        done
      fi

      # construction des éléments :
      if [[ "$PartFstype" =~ ext[2-4] ]]; then
        e2label "$Part" "$Label"
        echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
      elif [[ "$PartFstype" == "ntfs"  ]]; then
        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 "-----------------------------------------------------------------"
        echo "Script pour montage de partition de données terminé avec succès !"
        echo ""
        echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
      else
        echo "erreur inconnue !"
        exit 10
      fi
      break
    ;;
    *)
      unset Rep2
    ;;
  esac

En ligne

#216 Le 17/04/2025, à 01:32

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Watael a écrit :

mais, on peut s'en passer :

numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1) )
sed -i "$(printf '%dd;' "${numLines[@]}")" /etc/fstab

voire simplement :

sed -i '/'"$pmp"'/d' /etc/fstab

ou j'ai raté quelque chose ?

je ne suis pas arrivé a faire passer la variable dans sed pour le faire en direct . et à priori @nany non plus .
Du coup on s' est rabattu sur les numéros .

le problème étant que $pmp contient des " / " , si j' ai bien suivi .

En ligne

#217 Le 17/04/2025, à 01:38

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

un nombre , c' est forcément un numéro de version.

mouais. hmm

wikipédia version de logiciels a écrit :

Généralement, un numéro de version est composé d'une suite de nombres séparés par des points

c'est là que -V est pertinent.

Dernière modification par Watael (Le 17/04/2025, à 01:38)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#218 Le 17/04/2025, à 01:40

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

le problème étant que $pmp contient des " / " , si j' ai bien suivi .

ok, no problemo.
hop hop hop :

sed -i '\@'"$pmp"'@d' /etc/fstab

barbatruc !
big_smile

Dernière modification par Watael (Le 17/04/2025, à 02:09)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#219 Le 17/04/2025, à 08:50

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour,



Watael a écrit :

pourquoi sort -rV ?

Parce que je n’ai pas pris la peine de consulter le manuel de sort et que je ne me souvenais que de V.
Mea culpa, mea maxima culpa.




Watael a écrit :

hop hop hop :

sed -i '\@'"$pmp"'@d' /etc/fstab

barbatruc !
big_smile

Peut-on être absolument certain que la variable ne contiendra pas d’arobase ?

nany a écrit :
iznobe a écrit :

je me demande si ca n' a pas un rapport avec le fait que la variable contient des " / " justement ...

Ah oui, c’est très certainement à cause de ça.
Dans ce cas :

sed -i "\#$PartMountPoint#d" /etc/fstab

Source.
Bien sûr, $PartMountPoint ne doit pas contenir de croisillon.
Bref, comme on ne connaît pas à l’avance ce que va contenir la variable (à part au moins un slash), ta solution est peut-être meilleure.

 



Sinon, un tableau, c’est mieux. Merci Watael.

Hors ligne

#220 Le 17/04/2025, à 10:28

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

Peut-on être absolument certain que la variable ne contiendra pas d’arobase ?

en effet, non.
j'ai fait un amalgame avec LABEL, pour qui on a vérifié que le nom ne comporte que des caractères alphanumériques. hmm
smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#221 Le 17/04/2025, à 17:19

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Bonjour a vous , du coup si je résume , il vaut mieux conserver les numéros de ligne en enlevant le " -V " , et passer par un tableau ... ?

ce qui donnerait :

 PartMountPoints="$(grep "$Part" /etc/mtab | cut -d " " -f 2)"
              for pmp in $PartMountPoints; do
                umount -v "$pmp"
                numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -r) )
                for n in $numLines; do
                  sed -i "${n}d" /etc/fstab
                done
              done

???
c ' est pas pour demain que je maîtriserai les tableaux tongue



Sinon , autre chose , pour la verification de l ' etiuette deja en cours d ' utilisation , il faut que je modifie le grep :
grep sur LABEL=$Label et by-label/$Label

car parfois , ca part en k-k-wete avec :

if grep -q "$Label" /etc/fstab; then # verifier aussi avec disk/by/label ...

roll
exemple :

iznobe@iznobe-pc:~$ Label="to"; grep "$Label" /etc/fstab; # verifier aussi avec disk/by/label ...
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
LABEL=Seagate_4T                                /media/Seagate_4T		ext4    defaults,noauto                 0       0
# montage mergerfs , voir : https://forum.ubuntu-fr.org/viewtopic.php?id=2075424
# https://github.com/trapexit/mergerfs		https://zackreed.me/mergerfs-another-good-option-to-pool-your-snapraid-disks/
#/dev/disk/by-label/WD8PRO2			/media/WD8PRO2		ext4	defaults,noauto                 0       2
#/dev/disk/by-label/Seagate_1T			/media/Seagate_1T       ext4	defaults,noauto			0	2
#/dev/disk/by-label/Seagate_4T			/media/Seagate_4T       ext4	defaults,noauto			0	2
#/dev/disk/by-label/Sauvegardes			/media/Sauvegardes	ext4	defaults,noauto			0	2
iznobe@iznobe-pc:~$

Avec un peu de recherche je re trouverais comment faire un grep sur 2 motifs .
la question , si par exemple un utilisateur voudrais utiliser le script pour , en fait uniquement changer d ' étiquette , comme en parlait @geole précédemment .
comment organiser cela ?
le grep a deux motifs :

grep -E "LABEL=$Label|by-label/$Label" /etc/fstab

ceci à l' air de fonctionner pour la recherche sur 2 motifs , donc , deja je modifie cela dans mon script .
si détection , on pose la question à l' utilisateur ? puis on agit en conséquence ? mais ca me semble relativement risqué non ?


Est ce qu ' il serait inintéressant de faire comme ça , et même d' ajouter un ( des ) rmdir :

#!/bin/bash

# ----------------------------------------------------------------------------
# "LICENCE BEERWARE" (Révision 42):
# <iznobe@forum.ubuntu-fr.org> a créé ce fichier. Tant que vous conservez cet avertissement,
# vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
# que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en
# retour.
# ----------------------------------------------------------------------------

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

  while [ -z "$Label" ]; do
    read -rp "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 : " 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
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 4
    fi
  done
}

unmount() {
  while [ -z "$rep3" ]; do
    read -rp "Voulez-vous démonter la partition « $Part » de son emplacement actuel et procéder aux changements pour la monter avec l'étiquette « $Label » ? [O/n] " Rep3
    case "$Rep3" in
      N|n)
        echo "Annulation par l’utilisateur !"
        exit 1
      ;;
      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
        sleep 1 # prise en compte du montage par le dash , sans delai , parfois la partition ne s' affiche pas .
        unset Rep3
        break
      ;;
      *)
        unset Rep3
      ;;
    esac
 done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit 0
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 -rp "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
  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
    read -rp "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] " Rep
    case "$Rep" in
      N|n)
        Label="$PartLabel"
        break
      ;;
      Y|y|O|o|"")
        label
        break
      ;;
      *)
        unset Rep
      ;;
    esac
  done
fi

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

  case "$Rep2" in
    N|n)
      echo "Annulation par l’utilisateur !"
      exit 1
    ;;
    Y|y|O|o|"")
      if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then
        echo "L’UUID de la partition est déjà présent dans le fstab !"
        exit 2        
      elif grep -Eq "LABEL=$Label|by-label/$Label" /etc/fstab; then
        echo "L’étiquette « $Label » est déjà utilisée dans le fstab !"
        unmount
      elif grep -q "^$Part" /etc/mtab; then
        echo "La partition « $Part » est déjà montée !"
        unmount
      fi

      # construction des éléments :
      if [[ "$PartFstype" =~ ext[2-4] ]]; then
        e2label "$Part" "$Label"
        echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
      elif [[ "$PartFstype" == "ntfs"  ]]; then
        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 "-----------------------------------------------------------------"
        echo "Script pour montage de partition de données terminé avec succès !"
        echo ""
        echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
      else
        echo "erreur inconnue !"
        exit 10
      fi
      break
    ;;
    *)
      unset Rep2
    ;;
  esac
done

je n' ai pas encore intégré la modification pour le tableau , vu que ca va probablement encore être modifié ...

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

En ligne

#222 Le 17/04/2025, à 17:45

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

du coup si je résume , il vaut mieux conserver les numéros de ligne en enlevant le " -V "

Non, il faut remplacer le V par un n.

iznobe a écrit :

ce qui donnerait :

 PartMountPoints="$(grep "$Part" /etc/mtab | cut -d " " -f 2)"
              for pmp in $PartMountPoints; do
                umount -v "$pmp"
                numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -r) )
                for n in $numLines; do
                  sed -i "${n}d" /etc/fstab
                done
              done

???

Plutôt :

              PartMountPoints=( $(grep "$Part" /etc/mtab | cut -d " " -f 2) )
              for pmp in "${PartMountPoints[@]}"; do
                umount -v "$pmp"
                numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rn) )
                for n in "${numLines[@]}"; do
                  sed -i "${n}d" /etc/fstab
                done
              done

Hors ligne

#223 Le 17/04/2025, à 18:10

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

j ' ai modifié un peu le script et integré le tableau donc .

#!/bin/bash

# ----------------------------------------------------------------------------
# "LICENCE BEERWARE" (Révision 42):
# <iznobe@forum.ubuntu-fr.org> a créé ce fichier. Tant que vous conservez cet avertissement,
# vous pouvez faire ce que vous voulez de ce truc. Si on se rencontre un jour et
# que vous pensez que ce truc vaut le coup, vous pouvez me payer une bière en
# retour.
# ----------------------------------------------------------------------------

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

  while [ -z "$Label" ]; do
    read -rp "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 : " 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
    if [[ $Label == "${ListPart[$n,1]}" ]]; then
      echo "Erreur, votre étiquette « $Label » est déjà attribuée !"
      exit 4
    fi
  done
}

unmount() {
  while [ -z "$rep3" ]; do
    read -rp "Voulez-vous démonter la partition « $Part » de son emplacement actuel et procéder aux changements pour la monter avec l'étiquette « $Label » ? [O/n] " Rep3
    case "$Rep3" in
      N|n)
        echo "Annulation par l’utilisateur !"
        exit 1
      ;;
      Y|y|O|o|"")
        PartMountPoints="$(grep "$Part" /etc/mtab | cut -d " " -f 2)"
        for pmp in "${PartMountPoints[@]}"; do
          umount -v "$pmp"
          rmdir -v "$pmp"
          numLines=( "$(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rn)" )
          for n in "${numLines[@]}"; do
            sed -i "${n}d" /etc/fstab
          done
        done
        sleep 1 # prise en compte du montage par le dash , sans delai , parfois la partition ne s' affiche pas .
        unset Rep3
        break
      ;;
      *)
        unset Rep3
      ;;
    esac
 done
}

if ((UID)); then
  echo "Vous devez être super utilisateur pour lancer ce script (essayez avec « sudo »)"
  exit 0
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 -rp "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
  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
    read -rp "Voulez-vous changer l’étiquette de la partition « $Part » ? [O/n] " Rep
    case "$Rep" in
      N|n)
        Label="$PartLabel"
        unset Rep
        break
      ;;
      Y|y|O|o|"")
        label
        unset Rep
        break
      ;;
      *)
        unset Rep
      ;;
    esac
  done
fi

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

  case "$Rep2" in
    N|n)
      echo "Annulation par l’utilisateur !"
      unset Rep2
      exit 1
    ;;
    Y|y|O|o|"")
      if grep -q "$(lsblk -no uuid "$Part")" /etc/fstab; then
        echo "L’UUID de la partition est déjà présent dans le fstab !"
        unmount        
      elif grep -Eq "LABEL=$Label|by-label/$Label" /etc/fstab; then
        echo "L’étiquette « $Label » est déjà utilisée dans le fstab !"
        unmount
      elif grep -q "^$Part" /etc/mtab; then
        echo "La partition « $Part » est déjà montée !"
        unmount
      fi

      # construction des éléments :
      if [[ "$PartFstype" =~ ext[2-4] ]]; then
        e2label "$Part" "$Label"
        echo "LABEL=$Label /media/$Label $PartFstype defaults" >> /etc/fstab
      elif [[ "$PartFstype" == "ntfs"  ]]; then
        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 "-----------------------------------------------------------------"
        echo "Script pour montage de partition de données terminé avec succès !"
        echo ""
        echo "Vous pouvez maintenant accéder à votre partition en parcourant le dossier suivant : « /media/$Label/$SUDO_USER-$Label »."
      else
        echo "erreur inconnue !"
        exit 10
      fi
      unset Rep2
      break
    ;;
    *)
      unset Rep2
    ;;
  esac
done

et aussi ajouté " rmdir "  , ainsi que les unset pour chaque question à l' utilisateur dans tous les " case " .

Là je pense qu ' on approche la perfection tongue
hors mis shellcheck qui dit :

Line 42:
          numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rn) )
                     ^-- SC2207 (warning): Prefer mapfile or read -a to split command output (or quote to avoid splitting).

j ' ajoute donc les ' " ' , pas de soucis en vue ??

edité dans le script ci-dessus .

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

En ligne

#224 Le 17/04/2025, à 19:43

nany

Re : [ SCRIPT ] pour montage automatique partitions internes

iznobe a écrit :

le grep a deux motifs :

grep -E "LABEL=$Label|by-label/$Label" /etc/fstab

On peut éviter la répétition :

grep -E "(LABEL=|by-label/)$Label" /etc/fstab

 



iznobe a écrit :

j ' ai modifié un peu le script et integré le tableau donc .

…
         PartMountPoints="$(grep "$Part" /etc/mtab | cut -d " " -f 2)"
…
         PartMountPoints=( $(grep "$Part" /etc/mtab | cut -d " " -f 2) )

 




iznobe a écrit :

hors mis shellcheck qui dit :

Line 42:
          numLines=( $(grep -n "$pmp" /etc/fstab | cut -d ":" -f 1 | sort -rn) )
                     ^-- SC2207 (warning): Prefer mapfile or read -a to split command output (or quote to avoid splitting).

j ' ajoute donc les ' " '… ??

Non, on VEUT splitter !
Idem pour PartMountPoints ci-dessus. Et fi des avertissements de ShellCheck.

Hors ligne

#225 Le 17/04/2025, à 19:55

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

ok , j ' etais pas sur tongue

bon , j ' envoie la sauce dans le 1er messageet le github .

Merci encore @nany .

En ligne