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.

#326 Aujourd'hui à 10:33

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Salut watael , voici :

iznobe@k-pi3:~ $ mapfile -t labels < <(lsblk -no label)
for i in ${!labels[@]}; do echo "$i - ${labels[i]}"; done
0 - 
1 - bootfs
2 - rootfs
3 - mpoil
4 - 
iznobe@k-pi3:~ $

Donc il faudrait mettre :

mapfile -t labels < <(lsblk -no label)
    if [ -n "${!labels[0]}" ]; then
      for lab in "${!labels[@]}"; do
        echo "$lab=$newLabel"
        if [[ "$lab" == "$newLabel" ]]; then
          echo "OK"
          unset newLabel
          break
        fi
      done
    fi

?
quand meme , c' est pas tres intuitif cette histoire roll
je testerai mieux en rentrant chez moi . le principal etant que cela fonctionne , mais une idée de pourquoi ? :

"${!labels[@]}"

alors que pour les autres tableaux ce n' est pas necessaire , C' est lié à la sortie de la commande lsblk ?

Dernière modification par iznobe (Aujourd'hui à 10:44)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#327 Aujourd'hui à 12:39

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Suite aux indications de @Watael , et la prise en charge de points de montages multiples dans le fstab , voici le dernier script :

#!/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.
# ----------------------------------------------------------------------------

LC_ALL=C

choixlabel() {
  local rgx="[^[:alnum:]_-]"

  while [ -z "$newLabel" ]; 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 : " newLabel
    if [[ $newLabel =~ $rgx || ${#newLabel} -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 newLabel
    fi
    mapfile -t labels < <(lsblk -no label)
    for i in "${!labels[@]}"; do
      if [[ "${labels[i]}" == "$newLabel" ]]; then
        echo "Erreur, votre étiquette « $newLabel » est déjà attribuée ! Choisissez-en une autre."
        unset newLabel
        break
      fi
    done
  done
}

unmount() {
  local rgx="^(/mnt/|/media/).+$"
  while true; 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 « $newLabel » ? [O/n] "
    case "$REPLY" in
      N|n)
        echo "Annulation par l’utilisateur !"
        exit 0
      ;;
      Y|y|O|o|"")
        # traitement des partitions montées :
        mapfile -t PartMountPoints < <(grep "$Part" /etc/mtab | cut -d " " -f 2)
        if [ -n "${PartMountPoints[0]}" ]; then
          for pmp in "${PartMountPoints[@]}"; do
            umount -v "$pmp"
            if [ -d "$pmp" ]; then
              if [[ $pmp =~ $rgx ]]; then
                rmdir -v "$pmp"
              else
                echo "$pmp a été conservé."
              fi
            fi
            mapfile -t 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
        fi

        # traitement des partitions NON montées :
        mapfile -t mountPoints < <(grep -E "^(LABEL=|/dev/disk/by-label/)$PartLabel" /etc/fstab | cut -d ' ' -f 2)
        if [ -n "${mountPoints[0]}" ]; then
          for mp in "${mountPoints[@]}"; do
            if [ -d "$mp" ]; then
              if [[ $mp =~ $rgx ]]; then
                rmdir -v "$mp"
              else
                echo "$mp a été conservé."
              fi
            fi
            mapfile -t numLines < <(grep -n "$mp" /etc/fstab | cut -d ":" -f 1 | sort -rn)
            for n in "${numLines[@]}"; do
              sed -i "${n}d" /etc/fstab              
            done
          done
        sed -i "/$(lsblk -no uuid "$Part")/d" /etc/fstab
        fi
        sleep 1 # Prise en compte du montage par le dash, sans délai, parfois la partition ne s’affiche pas.
        break
      ;;
      *)
      ;;
    esac
 done
}

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

declare -A ListPart
declare -A Rgx=( [fstype]="^(ext[2-4]|ntfs)" [mountP]="^(/|/boot|/home|/tmp|/usr|/var|/srv|/opt|/usr/local)$" )

i=-1


while read -ra lsblkDT; do #path fstype mountpoint label
  if [[ ${lsblkDT[1]} =~ ${Rgx[fstype]} ]]; then
    if [[ ${lsblkDT[2]} =~ ${Rgx[mountP]} ]]; then
      continue
    else
      ((++i))
      ListPart[$i,0]="${lsblkDT[0]}"
      ListPart[$i,1]="${lsblkDT[1]}"
      if [[ ${lsblkDT[2]} =~ ^/ ]]; then
        ListPart[$i,2]="${lsblkDT[2]}"
        ListPart[$i,3]="${lsblkDT[3]}"
      else
        ListPart[$i,2]=""
        ListPart[$i,3]="${lsblkDT[2]}"
      fi
    fi
  fi
done < <(lsblk -no path,fstype,mountpoint,label)

if ((${#ListPart[@]} == 0)); then
  echo "Il n’y a pas de partition susceptible d’être montée."
  exit 2
fi

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

echo
echo " n° ⇒    path    label   fstype   mountpoint"
echo "--------------------------------------------"
for (( n=0; n<nbDev; n++ )); do
  if ((n+1 < 10)); then
    echo " $((n+1))  ⇒ ${ListPart[$n,0]}   ${ListPart[$n,3]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
  else
    echo " $((n+1)) ⇒ ${ListPart[$n,0]}   ${ListPart[$n,3]}   ${ListPart[$n,1]}   ${ListPart[$n,2]}"
  fi
done
echo

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)),3]}"
PartFstype="${ListPart[$((PartNum-1)),1]}"

#umount -v /media/"$PartLabel"

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

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

  case "$REPLY" in
    N|n)
      echo "Annulation par l’utilisateur !"
      exit 0
    ;;
    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 !"
      elif grep -Eq "(LABEL=|/dev/disk/by-label/)$newLabel" /etc/fstab; then
        echo "L’étiquette « $newLabel » est déjà utilisée dans le fstab !"
      elif grep -q "^$Part" /etc/mtab; then
        echo "La partition « $Part » est déjà montée !"
      fi
      unmount

      # construction des éléments :
      if [[ $PartFstype =~ ext[2-4] ]]; then
        e2label "$Part" "$newLabel"
        echo "LABEL=$newLabel /media/$newLabel $PartFstype defaults,nofail,x-systemd.device-timeout=1" >> /etc/fstab
      elif [ "$PartFstype" == "ntfs" ]; then
        ntfslabel  "$Part" "$newLabel"
        echo "LABEL=$newLabel /media/$newLabel ntfs3 defaults,nofail,x-systemd.device-timeout=1,x-gvfs-show,nohidden,uid=$SUDO_UID,gid=$SUDO_GID" >> /etc/fstab
      fi
      if ! [ -d /media/"$newLabel" ]; then
        mkdir -v /media/"$newLabel"
      fi
      systemctl daemon-reload
      if ! mount -a; then
        echo "erreur innatendue , annulation des modifications !"
        rmdir -v /media/"$newLabel"
        systemctl daemon-reload
        exit 3
      fi

      if ! [ -d /media/"$newLabel"/"$SUDO_USER"-"$newLabel" ]; then
        mkdir -v /media/"$newLabel"/"$SUDO_USER"-"$newLabel"
      fi
      chown -c "$SUDO_USER": /media/"$newLabel"/"$SUDO_USER"-"$newLabel"
      if ! [ -d /media/"$newLabel"/.Trash-"$SUDO_UID" ]; then
        mkdir -v /media/"$newLabel"/.Trash-"$SUDO_UID"
      fi
      chown -c "$SUDO_USER": /media/"$newLabel"/.Trash-"$SUDO_UID"
      chmod -c 700 /media/"$newLabel"/.Trash-"$SUDO_UID"

      if [ -d /media/"$newLabel"/.Trash-"$SUDO_UID" ]; then
        echo
        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/$newLabel/$SUDO_USER-$newLabel »."
        xdg-open "/media/$newLabel/$SUDO_USER-$newLabel"
      else
        echo "Erreur inconnue !"
        exit 4
      fi
      break
    ;;
    *)
    ;;
  esac
done

retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#328 Aujourd'hui à 13:18

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

je n'ai pas dit de l'intégrer au code, je t'ai demandé de nous faire voir le résultat.

il apparaît, comme on le savait déjà (et puis on a oublié wink ), que certaines partitions n'ont pas de LABEL.
si on ne peut donc pas se fier à ${label[0]} pour tester que le tableau comporte des éléments, on doit se rabattre à tester le nombre des éléments du tableau; encore que, comme je te l'ai dit, on peut se passer du test en définissant nullglob.
Cependant, la boucle for va potentiellement itérer sur des éléments vides ! ...

[ajout]
Mais, la liste des labels existe déjà !

for i in ${!ListPart[*]}; do if [[ $i == *,3 && ${ListPart[$i]} == "$newLabel" ]]; then echo "« $newLabel » existe déjà"; fi; done

d'ailleurs, nany a numéroté les "champs", mais ce n'est pas obligatoire, on aurait pu avoir des noms de "champs" plus explicites :

            ((++i))
            ListPart[$i,path]="${lsblkDT[0]}"
            ListPart[$i,mPoint]="${lsblkDT[1]}"
            if [[ ${lsblkDT[2]} =~ ^/ ]]; then
                ListPart[$i,fsType]="${lsblkDT[2]}"
                ListPart[$i,label]="${lsblkDT[3]}"
#...

la boucle du dessus deviendrait :

for i in ${!ListPart[*]}; do if [[ $i == *,label && ${ListPart[$i]} == "$newLabel" ]]; then echo "« $newLabel » existe déjà"; fi;done

edit: correction lListPart -> ListPart

Dernière modification par Watael (Aujourd'hui à 13:58)


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

Hors ligne

#329 Aujourd'hui à 13:37

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Watael a écrit :

[ajout]
Mais, la liste des labels existe déjà !

for i in ${!ListPart[*]}; do if [[ $i == *,3 && ${lListPart[$i]} == "$newLabel" ]]; then echo "« $newLabel » existe déjà"; fi;done

la boucle du dessus deviendrait :

for i in ${!ListPart[*]}; do if [[ $i == *,label && ${lListPart[$i]} == "$newLabel" ]]; then echo "« $newLabel » existe déjà"; fi;done

marche pas roll  :

for i in ${!ListPart[*]}; do
      if [[ $i == *,label && ${lListPart[$i]} == "$newLabel" ]]; then
        echo "Erreur, votre étiquette « $newLabel » est déjà attribuée ! Choisissez-en une autre."
      fi
    done
    # mapfile -t labels < <(lsblk -no label)
    # for i in "${!labels[@]}"; do
    #   if [[ "${labels[i]}" == "$newLabel" ]]; then
    #     echo "Erreur, votre étiquette « $newLabel » est déjà attribuée ! Choisissez-en une autre."
    #     unset newLabel
    #     break
    #   fi
    # done

done :

Choisissez le numéro correspondant à votre future partition de données : 16
La partition « /dev/nvme0n1p12 » a l’étiquette « test ».
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 : test
Voulez-vous procéder au montage maintenant pour la partition « /dev/nvme0n1p12 » en y mettant pour étiquette « test » ? [O/n]

Dernière modification par iznobe (Aujourd'hui à 13:47)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#330 Aujourd'hui à 13:56

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

ceci marche à priori :

for i in ${!ListPart[*]}; do
      if [[ $i == *,3 && ${ListPart[$i]} == "$newLabel" ]]; then
        echo "Erreur, votre étiquette « $newLabel » est déjà attribuée ! Choisissez-en une autre."
        unset newLabel
        break
      fi
    done

un " l " en trop dans :

${lListPart[$i]}

Dernière modification par iznobe (Aujourd'hui à 13:57)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#331 Aujourd'hui à 13:56

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

pour que ça ([[ $i == *,label) fonctionne, il faut avoir fait ça

            ((++i))
            ListPart[$i,path]="${lsblkDT[0]}"
            ListPart[$i,mPoint]="${lsblkDT[1]}"
            if [[ ${lsblkDT[2]} =~ ^/ ]]; then
                ListPart[$i,fsType]="${lsblkDT[2]}"
                ListPart[$i,label]="${lsblkDT[3]}"
#...

pour toutes les affectations de ListPart (d'où le #...).

et puis il y a une coquille ici : ${lListPart
je corrige.


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

Hors ligne

#332 Aujourd'hui à 14:01

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

j ' avais bien compris , mais comme la premiere boucle ne marchait pas , je me suis disque j' allais tester avec la 2eme ...
et ca ne marchait pas plus tongue

oui , j ' ai vu pour la coquille .

bon , je renvoie le code dans le github c ' est bon pour toi ? je modifie dans le 1er post .


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#333 Aujourd'hui à 14:06

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

sinon , on peut utiliser le " . " normalement pour les étiquettes non ? car il n' est pas compris dans la regex .


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#334 Aujourd'hui à 14:17

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

heu, non. d'après la regex [^[:alnum:]_-], le point n'est pas un caractère valide.


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

Hors ligne

#335 Aujourd'hui à 14:22

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

oui , c' est ce que je dis .

Mais je ne trouve pas sur le net , un document de référence qui donne les caractères que l ' on peut utiliser sans risque pour mettre dans un " label " hmm
peut être que le " . " est valide et qu ' on devrait l ' inclure dans la regex .

Dernière modification par iznobe (Aujourd'hui à 14:26)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#336 Aujourd'hui à 16:01

tycooon

Re : [ SCRIPT ] pour montage automatique partitions internes

oups !! ça fonctionne, mais beaucoup d'erreur au montage avec mon environnement avec nautilus.

$ sudo ./montage
[sudo] Mot de passe de olivier : 

 n° ⇒    path    label   fstype   mountpoint
--------------------------------------------
 1  ⇒ /dev/sda1   backup   ext4   /media/olivier/backup
 2  ⇒ /dev/sdb3   sauvegarde   ntfs   /media/sauvegarde
 3  ⇒ /dev/nvme0n1p2      ntfs   
 4  ⇒ /dev/nvme0n1p3      ntfs   

Choisissez le numéro correspondant à votre future partition de données : 2
La partition « /dev/sdb3 » a l’étiquette « sauvegarde ».
Voulez-vous changer l’étiquette de la partition « /dev/sdb3 » ? [O/n] n
Voulez-vous procéder au montage maintenant pour la partition « /dev/sdb3 » en y mettant pour étiquette « sauvegarde » ? [O/n] o
L’étiquette « sauvegarde » est déjà utilisée dans le fstab !
Voulez-vous démonter la partition « /dev/sdb3 » de son emplacement actuel et procéder aux changements pour la monter avec l'étiquette « sauvegarde » ? [O/n] o
umount: /media/sauvegarde (/dev/sdb3) démonté
rmdir: suppression du répertoire, '/media/sauvegarde'
mkdir: création du répertoire '/media/sauvegarde'

-----------------------------------------------------------------
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/sauvegarde/olivier-sauvegarde ».

** (org.gnome.Nautilus:37600): WARNING **: 15:52:27.397: 
========================================================
Cette application ne peut pas fonctionner correctement
si exécutée en tant que racine (pas même avec sudo). 
Envisagez d’exécuter `nautilus admin:/` à la place.
========================================================
** Message: 15:52:34.420: Connecting to org.freedesktop.Tracker3.Miner.Files
Initializing nautilus-image-converter extension

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:34.620: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:34.620: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:34.620: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): libunity-CRITICAL **: 15:52:34.627: file unity-launcher.c: line 1638: unexpected error: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom) (g-exec-error-quark, 8)

(org.gnome.Nautilus:37600): libunity-CRITICAL **: 15:52:34.627: unity_launcher_entry_dbus_impl_construct: assertion 'conn != NULL' failed

(org.gnome.Nautilus:37600): libunity-CRITICAL **: 15:52:34.631: unity-inspector.vala:96: Unable to connect to session bus: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): Gtk-WARNING **: 15:52:34.636: Unable to acquire session bus: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:34.702: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:34.702: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): GLib-GIO-CRITICAL **: 15:52:34.742: g_dbus_proxy_call_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed

(org.gnome.Nautilus:37600): GLib-GIO-CRITICAL **: 15:52:34.742: g_dbus_proxy_get_connection: assertion 'G_IS_DBUS_PROXY (proxy)' failed

(org.gnome.Nautilus:37600): GLib-GIO-CRITICAL **: 15:52:34.742: g_dbus_connection_signal_subscribe: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

** (org.gnome.Nautilus:37600): WARNING **: 15:52:34.742: Error creating proxy L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

** (org.gnome.Nautilus:37600): WARNING **: 15:52:34.742: Error creating proxy L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

** (org.gnome.Nautilus:37600): WARNING **: 15:52:34.742: Error creating proxy L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

** (org.gnome.Nautilus:37600): WARNING **: 15:52:34.742: Unable to create connection for session-wide Tracker indexer: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

** (org.gnome.Nautilus:37600): WARNING **: 15:52:34.756: Unable to get contents of the bookmarks file: Erreur lors de l’ouverture du fichier /root/.gtk-bookmarks : Aucun fichier ou dossier de ce nom

** (org.gnome.Nautilus:37600): WARNING **: 15:52:34.757: Unable to get contents of the bookmarks file: Erreur lors de l’ouverture du fichier /root/.gtk-bookmarks : Aucun fichier ou dossier de ce nom

(org.gnome.Nautilus:37600): nautilus-application-CRITICAL **: 15:52:34.823: update_dbus_opened_locations: assertion 'dbus_object_path' failed

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:34.823: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

(org.gnome.Nautilus:37600): dconf-WARNING **: 15:52:48.172: failed to commit changes to dconf: L’exécution du processus fils « dbus-launch » a échoué (Aucun fichier ou dossier de ce nom)

il ne doit pas aimer cette ligne ????

 xdg-open "/media/$newLabel/$SUDO_USER-$newLabel"

Hors ligne

#337 Aujourd'hui à 16:25

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

Salut @tycooon , il n ' y a que cela comme erreurs ? tongue

bon , je supprime la ligne .


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#338 Aujourd'hui à 16:37

tycooon

Re : [ SCRIPT ] pour montage automatique partitions internes

bon j'ai trouvé le problème c'est le sudo

sudo xdg-open "/media/sauvegarde/olivier-sauvegarde"
[sudo] Mot de passe de olivier : 

** (org.gnome.Nautilus:40453): WARNING **: 16:33:47.221: 
========================================================
Cette application ne peut pas fonctionner correctement
si exécutée en tant que racine (pas même avec sudo). 
Envisagez d’exécuter `nautilus admin:/` à la place.
========================================================

sans le sudo ça fonctionne

xdg-open "/media/sauvegarde/olivier-sauvegarde"

Mais comme le script est lancé avec le sudo, j'ai les messages d'erreur

Hors ligne

#339 Aujourd'hui à 17:12

tycooon

Re : [ SCRIPT ] pour montage automatique partitions internes

si tu tiens vraiment à ouvrir l'interface graphique, ceci fonctionne sans erreur

sudo -u "$SUDO_USER" xdg-open "/media/$newLabel/$SUDO_USER-$newLabel" >/dev/null 2>&1 &

Bon Ok, j'ai pas trouvé tout seul tongue tongue

Hors ligne

#340 Aujourd'hui à 17:26

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

je suis pas sur que l' esperluette à la fin de la commande soit nécessaire .

je trouvais que ça faisait quand même plus classe d ' ouvrir le dossier en question à la fin , du coup j ' ajoute la nouvelle ligne , sans le dernier " & " .

Merci wink

Dernière modification par iznobe (Aujourd'hui à 17:31)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#341 Aujourd'hui à 17:44

erresse

Re : [ SCRIPT ] pour montage automatique partitions internes

Hello,
Autant que je sache, la variable "$SUDO_USER" est utile pour connaître le nom de l'utilisateur qui exécute le script lorsque ce dernier est lancé avec "sudo". Sans cela, la variable "$USER" renvoie "root" et non l'utilisateur.
Donc, si le script de iznobe est bien exécuté avec "sudo" au lancement, il est indispensable d'utiliser "$SUDO_USER" pour pouvoir identifier correctement l'utilisateur.


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

#342 Aujourd'hui à 17:54

Watael

Re : [ SCRIPT ] pour montage automatique partitions internes

suppression de unmount() : une fonction est vraiment utile pour du code qui se répète

# traitement des partitions montées
mapfile -t mountedParts < <(grep "$Part" /etc/mtab | cut -d ' ' -f 2)
delMountPoint mountedParts
# traitement des partitions NON montées
mapfile -t unmountedParts < <(grep -E "^(LABEL=|/dev/disk/by-label/)$PartLabel" /etc/fstab | cut -d ' ' -f 2)
delMountPoint unmountedParts 
sed -i "/$(lsblk -no uuid "$Part")/d" /etc/fstab
sleep 1 # Prise en compte du montage par le dash, sans délai, parfois la partition ne s’affiche pas.

avec delMountPoint telle que :

delMountPoint()
{
    local rgx="^(/mnt/|/media/).+$"
    declare -na parts=$1
    for part in "${parts[@]}"
    do
        if test "$1" = 'mountedParts'; then umount -v "$part"; fi
        if [ -d "$part" ]
        then
            if [[ $part =~ $rgx ]]
            then
                rmdir -v "$part"
            else
                echo "$part a été conservé."
            fi
        fi
        mapfile -t numLines < <(grep -n "$part" /etc/fstab | cut -d ":" -f 1 | sort -rn)
        for n in "${numLines[@]}"
        do
            sed -i "${n}d" /etc/fstab              
        done
    done
}

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

Hors ligne

#343 Aujourd'hui à 18:10

iznobe

Re : [ SCRIPT ] pour montage automatique partitions internes

ok , une fonction a un paramètre .

bon là , j' en ai un peu ras le bol ... , mais c' était ma future question de toute manière , tu m' as devancé big_smile


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne