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.

#26 Le 12/06/2026, à 11:31

argolance

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

[Merci, je vais voir de plus près et répondre à vos messages à mon retour!] smile

Hors ligne

#27 Le 12/06/2026, à 16:38

RaphaelG

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

je revois ma copie puisque je me suis fait enguirlander par Watael.
J'ai encore modifié le fichier dlink.conf. Il n'y a pas de raison que le 1er montage ne soit pas préfacé par sudo.

montages$ cat dlink2.conf
sudo mount -t cifs -o xxx,credentials=/etc/.DLINK.mdp //192.168.1.33/volume_1/DOCUMENTS $HOME/Documents/DOCUMENTS
sudo mount -t cifs -o xxx,credentials=/etc/.DLINK.mdp //192.168.1.33/volume_1/IMAGES $HOME/Images/IMAGES
sudo mount -t cifs -o xxx,credentials=/etc/.DLINK.mdp //192.168.1.33/volume_1/MUSIQUE $HOME/Musique/MUSIQUE
montages$ 

Mon nouveau script :

#!/usr/bin/bash

Conf="./dlink2.conf" # C'est mieux de mettre le chemin absolu
declare -a cmd

while read cmd
do
   echo ${cmd[0]} | bash -s  # Le -s est important
done < $Conf
montages$

Si vraiment, il faut bannir le fichier tiers dlink.conf alors on peut utiliser le script de Watael en #6 ou encore plus simple, enchaîner les 3 mounts comme l'OP le faisait en #1 ou d'utiliser fstab comme le préconisent krodelabestiolle et iznobe.
Pourquoi faire compliquer quand on peut faire simple, KISS, toussa ...

Hors ligne

#28 Le 12/06/2026, à 18:32

Watael

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

#declare -a cmd

while read -a cmd
do

mais si tu sais que tu ne va utiliser que le premier champ d'un enregistrement :

while read cmd toutlLeReste
do

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

En ligne

#29 Le 12/06/2026, à 19:43

RaphaelG

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

En #27 mon array ne contient qu'une seule grosse colonne.
Avec ta proposition, l'array va contenir 8 colonnes et il faut que je les utilises toutes.

montages$ cat montages3.sh 
#!/usr/bin/bash

Conf="./dlink2.conf" # C'est mieux de mettre le chemin absolu

while read -a cmd
do
   echo ${cmd[@]} | bash -s  # Le -s est important
done < $Conf
montages$ 

On gagne 1 ligne.

Hors ligne

#30 Le 12/06/2026, à 20:18

argolance

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

Bonsoir,

RaphaelG a écrit :

"C'est fastoche, argolance est nul de ne pas trouver comment faire".

smile
En tout cas pas de formation dans le domaine et des lacunes... abyssales! Mon code? Du gros qui tache sans doute un peu mais qui marche au bout du compte, avec de l'aide! Si on ajoute à ça pas pratiqué (GTKDIALOG pour Puppy) depuis plusieurs années... wink
Juste un jeu, des énigmes à résoudre, des heures de bidouille et puis... Eureka! cool
Prenant mais passionnant, magique! Échanger avec des personnes dont je ne verrai probablement jamais le visage, parfois à l'autre bout du monde! Voilà pour la profession de foi, totalement hors-sujet! roll
----------------------------------------------------------------------------
@RaphaelG et @Watael

montages$ cat dlink2.conf
[...]
montages$

montages$? Qu'est-ce?
En tout cas:

#!/bin/sh

Conf=".config/dlink.conf"
declare -a cmd

while read cmd
do
echo ${cmd[0]} | bash -s
done < $Conf

... est parfaitement opérationnel, avec un dlink.conf qui contient uniquement les lignes de sudo mount -t xxx.
Question: L'option -s qui est importante, correspond à quoi?
Maintenant, comment "marier" ce code avec Zenity, qui est présent sur toutes les distributions je crois.
J'ai fait des essais mais la demande de mot de passe en mode graphique par Zenity n'est pas prise en compte. Le montage se fait sans!
Merci!

Dernière modification par argolance (Le 12/06/2026, à 21:06)

Hors ligne

#31 Le 12/06/2026, à 20:32

Watael

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

Avec ta proposition, l'array va contenir 8 colonnes et il faut que je les utilises toutes.

pourquoi utiliser un array, alors ?
fais juste :

while read cmd
do
    echo $cmd | bash -s
done <"$cmdFile"

non ?

et pourquoi pas simplement

xargs --replace='{}' --arg-file="$cmdFile" bash -c {}

?

edit: remplacement des options courtes par des longues, dans la commande xargs, pour davantage de lisibilité.

Dernière modification par Watael (Le 13/06/2026, à 12:42)


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

En ligne

#32 Le 12/06/2026, à 21:57

argolance

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

Watael a écrit :

Avec ta proposition, l'array va contenir 8 colonnes et il faut que je les utilises toutes.

pourquoi utiliser un array, alors ?
fais juste :

while read cmd
do
    echo $cmd | bash -s
done <"$cmdFile"

non ?

et pourquoi pas simplement

xargs -i -a "$cmdFile" bash -c {}

?

Les deux fonctionnent, la deuxième très "simple" est parfaite.
Tout l'intérêt d'un fichier contenant les lignes de commandes mount, c'est que celles qui sont commentées sont ignorées et les dossiers correspondants non montés. Ce fichier peut être édité via mon interface graphique et les lignes configurées selon les besoins du poste de travail. C'est le but recherché en fait!
Reste Zenity ou Yad, qui fonctionne de la  même façon...

Hors ligne

#33 Le 13/06/2026, à 11:44

argolance

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

Bonjour et un grand merci à vous. Communauté Ubuntu.fr toujours aussi vivace. smile
Les derniers posts de RaphaelG et Watael répondant pleinement à l'intitulé du sujet de ce fi, je le considère et marque donc comme RÉSOLU.
Le problème posé par Zenity/Yad étant hors-sujet, je vais poser la question dans un autre post.

Hors ligne

#34 Le 13/06/2026, à 12:21

RaphaelG

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

Des explications par rapport à ton message #30

argolance a écrit :

......
montages$? Qu'est-ce?
......
Question: L'option -s qui est importante, correspond à quoi?
.....

"montages$ ", c'est juste mon prompt ($PS1) qui me montre juste le dernier élément de mon working directory. Derrière tu me vois taper la commande cat.

Pour l'option "-s" de bash je dirai RTFM, man bash.

man bash a écrit :

      -s        If the -s option is present, or if no arguments remain  after
                 option  processing,  then commands are read from the standard
                 input.  This option allows the positional  parameters  to  be
                 set  when invoking an interactive shell or when reading input
                 through a pipe.

Je trouve la commande xargs encore plus difficile à appréhender et à maîtriser.
Et en plus c'est une commande externe alors que la boucle while, read et echo sont toutes des commandes internes à bash. (ça c'est une petite pique pour Watael. ;-)

Hors ligne

#35 Le 13/06/2026, à 12:39

Watael

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

une boucle while devrait pouvoir construire une chaîne de commandes pour que cette dernière soit passée en une seule fois à un shell, plutôt que d'invoquer celui-ci autant de fois qu'il y a de commandes.

while read cmd
do
   [[ $cmd == \#* ]]  && continue
   cmds="${cmds:+$"cmds; "}$cmd"
done
echo "$cmds" | bash -s

ce que ne fait pas xargs.


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

En ligne

#36 Le 13/06/2026, à 13:04

argolance

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

argolance a écrit :

Le problème posé par Zenity/Yad étant hors-sujet, je vais poser la question dans un autre post.

Problème également résolu: lancé en console, il me semble qu'il doit y avoir redondance de la commande sudo, ce qui n'a pas lieu lancé à partir du script lui-même.
Donc:
Le fichier de la liste des commandes mount (commentées ou pas selon les besoins) sans les sudo.

mount -t cifs -o wwwww
mount -t cifs -o xxxxxx
#mount -t cifs -o yyyyyy
mount -t cifs -o zzzzzz

Dans le script (avec l'une ou l'autre proposition de RaphaelG et Watael)
Avec YAD:   

	yad --skip-taskbar \
	--center \
	--width=400 \
	--borders=10 \
	--undecorated \
	--image /opt/dlink/authentication.png \
	--entry --entry-label="Mot de passe :"\
	--hide-text \
	--button=gtk-ok:0 \
	--button=gtk-cancel:1 \
	--text-align=center \
	--text="<span font='15'>Authentification...</span>" | sudo -S xargs -i -a "$HOME/.config/dlink.conf" bash -c {}

Zenity:

zenity --password --title "Mot de passe utilisateur $USER..." | sudo -S ...

NOTE: les dossiers de montage cibles doivent être créés préalablement (mkdir...) pour que ces commandes fonctionnent en l'état. Le script complet dont cette commande n'est qu'une partie, fait automatiquement ça à la première exécution du programme si les dossiers cibles n'existent pas.

Dernière modification par argolance (Le 13/06/2026, à 13:47)

Hors ligne

#37 Le 13/06/2026, à 13:06

argolance

Re : [RÉSOLU] Plusieurs <source> <répertoire> avec la commande "mount"

@Watael : Merci pour les précisions et le temps que tu, que vous avez bien voulu consacrer à ce sujet.

Hors ligne

#38 Le 20/06/2026, à 19:55

argolance

Hors ligne