#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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
$ 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
$ 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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
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
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
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/|'
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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/|'
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
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
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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne