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.

#1 Le 19/01/2013, à 17:19

BrunoL

[Résolu] udev et adresse en /dev/sdxy

Bonjour,

Je récupère d'une règle udev le répertoire "/devices/pci0000:00/0000:00:1d.7/usb2/2-1" ainsi que le device "26" et le bus "2" d'un support externe lors de son branchement.

Comment faire pour transformer ces caractéristiques en /dev/sdxy ?
J'ai numéroté la règle en 60.

Nota : je ne tiens pas à forcer une adresse fixe.

Merci.

Dernière modification par BrunoL (Le 22/01/2013, à 19:49)

Hors ligne

#2 Le 19/01/2013, à 18:54

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

les /dev/sdX sont numérotés dans l'ordre dans lequel ils sont détectés et/ou branchés dans le système.

Il n'y a absolument aucun lien logique entre les /sys/devices/XXXXX et /dev/sdX.

Hors ligne

#3 Le 19/01/2013, à 19:19

BrunoL

Re : [Résolu] udev et adresse en /dev/sdxy

Hey tiramiseb,
Réponse un peu tranchée hmm

$ udevadm trigger --verbose|grep /devices/pci0000:00/0000:00:1d.7/usb2/2-2

semble montrer le contraire ... voir ligne block

J'en déduis possible qu'il existe un moyen d'obtenir plus précisément l'information. Au pire grep et boucle mais c'est un peu lourd.

A+

Hors ligne

#4 Le 19/01/2013, à 21:44

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

BrunoL a écrit :
$ udevadm trigger --verbose|grep /devices/pci0000:00/0000:00:1d.7/usb2/2-2

semble montrer le contraire ... voir ligne block

J'en déduis possible qu'il existe un moyen d'obtenir plus précisément l'information. Au pire grep et boucle mais c'est un peu lourd.

Là comme ça je ne vois pas d'autre possibilité qu'un grep sur "block/sd.$" dans le retour de udevadm trigger --verbose :

$ udevadm trigger --verbose | grep block/sd.$
/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda

Hors ligne

#5 Le 19/01/2013, à 23:21

BrunoL

Re : [Résolu] udev et adresse en /dev/sdxy

C'est effectivement là que j'en suis. Je pensais qu'il devait exister mieux.

Me reste plus qu'à décortiquer pour ne retenir que les /dev/sdxy je vais passer par python parce qu'en bash, je touche là mes limites wink

Bye

Hors ligne

#6 Le 19/01/2013, à 23:30

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

Parce que "grep block/sd.$" ne retient pas que les disques ?
Si tu veux les partitions, tu peux faire "grep block/sd..+$" je pense

Hors ligne

#7 Le 22/01/2013, à 19:48

BrunoL

Re : [Résolu] udev et adresse en /dev/sdxy

Merci à LINDIS pour sa réponse en privé que je publie au cas où cela intéresse quelqu'un ... Si si c'est possible smile

Donc avec un truc du genre "/devices/pci0000:00/0000:00:1d.7/usb2/2-2"
La formule magique suivante :

echo -e "`udevadm trigger --verbose |grep -e $5.*/block/|sed -e "s/.*block\/sd.\//\/dev\//"|grep dev\/`" 

vous donne le devices /dev/sdxy de toutes les partitions contenu dans le support !

N'en abusez pas wink
S'il y a plus simple n'hésitez pas, je suis sûr que LINDIS ne s'en offusquera pas.

A+

Hors ligne

#8 Le 22/01/2013, à 20:13

cep

Re : [Résolu] udev et adresse en /dev/sdxy

Pas forcément plus simple, mais différent smile

udisks --enumerate-device-files |grep "/dev/sd"

Juste pour faire penser aux possibilités de udisk

Ou même :

awk '/sd/ {print "/dev/"$4}' /proc/partitions 

Hors ligne

#9 Le 22/01/2013, à 21:27

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

On est bien d'accord, tu veux obtenir le nom d'un device correspondant à une clé USB (ou équivalent) à partir du chemin du device dans /sys ? Si oui, alors la commande suivante est un chouïa différente de ce que tu as montré (me semble plus simple à moi, mais chacun son ressenti) :

udevadm trigger --verbose | grep '<CHEMIN DU DEVICE>.*/block/sd' | sed 's|.*block/|/dev/|;s|/dev/sd./|/dev/|'

Hors ligne

#10 Le 23/01/2013, à 13:47

BrunoL

Re : [Résolu] udev et adresse en /dev/sdxy

Merci tiramiseb, un grep en moins c'est effectivement plus simple.

Je vais essayer de comprendre le montage grep|sed

A+

Hors ligne

#11 Le 23/01/2013, à 13:55

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

Je vais essayer de comprendre le montage grep|sed

Si tu trouves pas tout seul, je peux t'expliquer big_smile

Hors ligne

#12 Le 23/01/2013, à 14:52

BrunoL

Re : [Résolu] udev et adresse en /dev/sdxy

Une légére différence subsiste. tiramiseb comment modifer ton instruction pour que ne sorte pas le device ne correspondant pas à une partition ?
Ton instruction :

$ udevadm trigger --verbose | grep '/sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0.*/block/sd' | sed 's|.*block/|/dev/|;s|/dev/sd./|/dev/|'
/dev/sda    <      <    <<<<<<<<<<<<<<<<<<<<<
/dev/sda1
[...]
/dev/sda5

Actuellement :

udevadm trigger --verbose |grep -e /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0.*/block/|sed -e "s/.*block\/sd.\//\/dev\//"|grep dev\/
/dev/sda1
[...]
/dev/sda5

Merci.

Hors ligne

#13 Le 23/01/2013, à 14:54

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

Alors c'est encore plus simple :

udevadm trigger --verbose | grep '<CHEMIN DU DEVICE>.*/block/sd./' | sed 's|.*block/sd./|/dev/|'

Hors ligne

#14 Le 23/01/2013, à 19:50

BrunoL

Re : [Résolu] udev et adresse en /dev/sdxy

Excellent le coup du / final ... je cherchais en partant du n° final de partition !

Et alors changer dans sed le / par | rend l'instruction nettement plus lisible et compréhensible cool

Encore un grand merci. Je continue sur de bonnes bases.

A+

Dernière modification par BrunoL (Le 23/01/2013, à 19:51)

Hors ligne

#15 Le 24/01/2013, à 08:18

tiramiseb

Re : [Résolu] udev et adresse en /dev/sdxy

Et alors changer dans sed le / par | rend l'instruction nettement plus lisible et compréhensible

En fait tu peux changer le "/" par n'importe quel caractère ASCII :

$ echo "plop" | sed 'saoaia'
plip

Attention : cela ne marche pas partout, seulement avec sed en ligne de commande - par exemple ça ne marche pas dans Vim.

Hors ligne