#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
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é ), 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
[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 :
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
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 "
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 ?
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
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
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é
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne