logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 22-03-2017 17:36:22

dejieres
Membre
Lieu : Moselle
Distrib. : Bookworm 64 bits
(G)UI : GNOME
Inscription : 07-02-2017

[resolu] Extraire un point de montage

Bonjour,

Petite question pour les barbu(e)s du bash...

J'ai, au fin fond de mon /etc/fstab, ces quelques lignes parmi d'autres :

# >>> [openmediavault]
UUID=860c1e7e-0417-44f8-89f5-f114d2df30a2 /media/860c1e7e-0417-44f8-89f5-f114d2df30a2 ext4 defaults,nofail,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# <<< [openmediavault]
 


J'aimerais pouvoir récupérer le point de montage de cette ligne précise, c'est-à-dire /media/860c1e7e-0417-44f8-89f5-f114d2df30a2, afin de pouvoir lancer dans la foulée une commande find sur ce périphérique :

find /media/860c1e7e-0417-44f8-89f5-f114d2df30a2 -type d ! -path "*/.*"



Quelle serait la meilleure méthode, si possible en une seule ligne de commande ?
Si vous avez des pistes, parce que là, mes connaissances bash ne sont pas suffisantes pour me permettre de savoir par où attaquer le problème scratchhead.gif

Dernière modification par dejieres (23-03-2017 08:40:54)

Hors ligne

#2 22-03-2017 17:46:24

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : [resolu] Extraire un point de montage

cat /etc/fstab | grep 860c1e | awk '{print $2}'

Hors ligne

#3 22-03-2017 18:56:04

dejieres
Membre
Lieu : Moselle
Distrib. : Bookworm 64 bits
(G)UI : GNOME
Inscription : 07-02-2017

Re : [resolu] Extraire un point de montage

Merci Severian. En effet, ça retourne bien le point de montage, mais je me rends compte que je n'ai pas été assez précis dans ma formulation ops.gif

La commande doit pouvoir être exécutée sur n'importe quelle machine OMV (il y en aura plusieurs). Pour chaque machine, l'UUID sera bien entendu différent, donc il ne peut pas servir à faire la recherche. De plus, il peut y avoir d'autres points de montage en /media/, ce n'est donc pas un critère de recherche valable non plus... Pas plus que UUID=, d'ailleurs.

Du coup, il faut en fait extraire le point de montage de la ligne qui se trouve entre les deux commentaires [openmediavault], et insérer le résultat dans la commande find. C'est possible en une seule ligne, ça ?

Hors ligne

#4 22-03-2017 19:30:35

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : [resolu] Extraire un point de montage

Je propose une solution à base de sed, un poil difficile à lire, mais bon :


cat /etc/fstab |sed -n '/# >>> \[openmediavault\]/,/# <<< \[openmediavault\]/s/^UUID=\([^ ]\)* \(\/media\/[^ ]*\) .*/\2/p'
 


Attention aux espaces dans les [^ ].
Je n'ai pas testé… le principe est de sélectionner entre «# >>> [openmediavault]»  et «# <<< [openmediavault]» et
de faire une substitution  bien choisie pour chacune de ses lignes, et de n'afficher le résultat que s'il y a une substitution.

Hors ligne

#5 22-03-2017 19:33:10

dejieres
Membre
Lieu : Moselle
Distrib. : Bookworm 64 bits
(G)UI : GNOME
Inscription : 07-02-2017

Re : [resolu] Extraire un point de montage

Merci enicar smile

J'ai cherché de mon côté aussi, sur la base de la piste donnée par Severian, et j'ai déjà trouvé ça :

awk '/\>\>\> /{flag=1;next}/\<\<\< /{flag=0}flag' /etc/fstab


Ce qui me donne :

UUID=860c1e7e-0417-44f8-89f5-f114d2df30a2 /media/860c1e7e-0417-44f8-89f5-f114d2df30a2 ext4 defaults,nofail,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2



Apuka extraire le morceau qui m'intéresse et l'insérer dans la commande find...

Hors ligne

#6 22-03-2017 19:45:36

dejieres
Membre
Lieu : Moselle
Distrib. : Bookworm 64 bits
(G)UI : GNOME
Inscription : 07-02-2017

Re : [resolu] Extraire un point de montage

Bon, ben je crois que j'ai trouvé quelque chose qui marche...

find `awk '/\>\>\> /{flag=1;next}/\<\<\< /{flag=0}flag' /etc/fstab | awk '{print $2}'` -type d ! -path "*/.*"


Je ne sais pas si c'est très propre (j'appelle deux fois awk, y'a peut-être moyen de faire avec un seul appel ?), mais ça me donne le résultat attendu.

S'il y a moyen d'améliorer, je suis preneur smile

En tout cas merci.gif pour vos recherches à tous les deux

Hors ligne

#7 22-03-2017 20:08:34

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : [resolu] Extraire un point de montage

bhâ simplement

find `awk '/\>\>\> /{flag=1;next}/\<\<\< /{flag=0}flag {print $2}' /etc/fstab` -type d ! -path "*/.*"

Hors ligne

#8 23-03-2017 08:39:00

dejieres
Membre
Lieu : Moselle
Distrib. : Bookworm 64 bits
(G)UI : GNOME
Inscription : 07-02-2017

Re : [resolu] Extraire un point de montage

La beauté de la simplicité cool

merci.gif

Hors ligne

Pied de page des forums