#1 Le 17/03/2018, à 22:25
- Arbiel
[Résolu] Établir la liste des volumes USB
Bonsoir à tous
J'ai utilisé la commande lshw pour établir la liste de mes volumes amovibles. Cela fonctionne bien, mais un peu trop lentement à mon goût. La cause en est la production de beaucoup d'informations dont je ne me sers pas.
remi@remi-Vostro-3550:~$ xpath="//node/configuration/setting[@value=\"usb-storage\"]/../../node/logicalname"
remi@remi-Vostro-3550:~$ time lshw -xml 2>/dev/null | tee /tmp/lshw.xml | xmlstarlet sel -t -v "${xpath}"
/dev/sdb
/dev/sdc
/dev/sdd
real 0m4.106s
user 0m3.949s
sys 0m0.088s
remi@remi-Vostro-3550:~$
Puis-je parvenir au même résultat avec une autre commande ?
Merci d'avance à qui pourra me mettre sur la voie.
Arbiel
Dernière modification par Arbiel (Le 18/03/2018, à 23:40)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#2 Le 17/03/2018, à 22:26
- k3c
Re : [Résolu] Établir la liste des volumes USB
et la commande
lsusb
?
Archlinux sur Xiaomi Air 13
Hors ligne
#3 Le 18/03/2018, à 09:56
- serged
Re : [Résolu] Établir la liste des volumes USB
... Et ton truc n'a pas l'air de toujours marcher :
Chez moi, avec une clef USB + un graveur de DVD externe, il ne trouve que le graveur (/dev/sr1)
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#4 Le 18/03/2018, à 10:08
- bruno
Re : [Résolu] Établir la liste des volumes USB
Il y a pas mal de commandes disponibles pour voir une liste de disques/partitions : lsblk, mount, parted …
On peut aussi explorer l'arborescence /dev pour voir ce qu'il y a en USB :
ls -l /dev/disk/by-id/usb*
Dernière modification par bruno (Le 18/03/2018, à 10:09)
Hors ligne
#5 Le 18/03/2018, à 12:00
- MicP
Re : [Résolu] Établir la liste des volumes USB
Bonjour
Pour les périphériques disque USB,
lister les liens qui sont dans le répertoire /dev/disk/by-path
ls -l /dev/disk/by-path
cette ligne de commande retournera une erreur si aucun disque (ou lecteur de disque) USB n'est connecté à la machine
parce que dans ce cas, le sous-répertoire by-path sera inexistant.
michel@debg53sw:~$ ls -l /dev/disk/by-path
ls: impossible d'accéder à /dev/disk/by-path: Aucun fichier ou dossier de ce type
michel@debg53sw:~$ echo $?
2
michel@debg53sw:~$
Et après avoir connecté une clef USB :
michel@debg53sw:~$ ls -l /dev/disk/by-path
total 0
lrwxrwxrwx 1 root root 9 mars 18 11:08 pci-0000:04:00.0-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sdb
lrwxrwxrwx 1 root root 10 mars 18 11:08 pci-0000:04:00.0-usb-0:1:1.0-scsi-0:0:0:0-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 mars 18 11:08 pci-0000:04:00.0-usb-0:1:1.0-scsi-0:0:0:0-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 mars 18 11:08 pci-0000:04:00.0-usb-0:1:1.0-scsi-0:0:0:0-part3 -> ../../sdb3
michel@debg53sw:~$
=======
Pour obtenir la liste des noms de fichiers de périphériques disque connectés par USB,
on pourrait faire :
readlink /dev/disk/by-path/* | sed -n 's|../../|/dev/|;/[1-9]/!p'
Dernière modification par MicP (Le 18/03/2018, à 13:12)
Hors ligne
#6 Le 18/03/2018, à 12:30
- bruno
Re : [Résolu] Établir la liste des volumes USB
Sans aucune clé, ni disque USB connecté sur ma machine :
[bruno@aboulafia:~]$ ls -l /dev/disk/by-path
total 0
lrwxrwxrwx 1 root root 9 mars 18 09:08 pci-0000:00:11.0-ata-2 -> ../../sda
lrwxrwxrwx 1 root root 10 mars 18 09:08 pci-0000:00:11.0-ata-2-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 mars 18 09:08 pci-0000:00:11.0-ata-2-part2 -> ../../sda2
lrwxrwxrwx 1 root root 9 mars 18 09:08 pci-0000:00:11.0-ata-4 -> ../../sdb
lrwxrwxrwx 1 root root 10 mars 18 09:08 pci-0000:00:11.0-ata-4-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:11.0-ata-6 -> ../../sr0
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:0 -> ../../sdc
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:1 -> ../../sdd
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:2 -> ../../sde
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:3 -> ../../sdf
Hors ligne
#7 Le 18/03/2018, à 12:45
- MicP
Re : [Résolu] Établir la liste des volumes USB
Bonjour bruno
Il doit peut-être s'agir d'un lecteur de cartes connecté par USB…
Par contre, pour sda et sdb, je ne sais pas du tout pourquoi ils sont listés dans /dev/disk/by-path
EDIT : Comme disais J. Gabin "Maintenant, je sais…" : C'était parce que j'utilisais l'ancienne : la version 8.10 de debian (jessie)
Pourrais-tu donner le retour des lignes de commande suivantes :
udisksctl status
ls -l /dev/disk/by-{id,path}
Merci.
=======
OK => Je modifie mon message précédent
Dernière modification par MicP (Le 18/03/2018, à 23:54)
Hors ligne
#8 Le 18/03/2018, à 13:47
- bruno
Re : [Résolu] Établir la liste des volumes USB
@MicP : il s'agit effectivement d'un lecteur de cartes interne (connecté en USB à la carte mère). Il semble que udev créé un un périphérique de type bloc pour chaque lecteur de carte automatiquement au démarrage.
Voici les retours :
[bruno@aboulafia:~]$ udisksctl status
MODEL REVISION SERIAL DEVICE
--------------------------------------------------------------------------
SanDisk SDSSDP064G 3.2.0 151058404141 sda
WDC WD10EFRX-68FYTN0 82.00A82 WD-WCC4J1UFD4LF sdb
ASUS DRW-24F1MT 1.00 S1AI6YBG5005ZR sr0
USB2.0 CardReader CF 0100 606569746801 sdc
USB2.0 CardReader SM XD 0100 606569746801 sdd
USB2.0 CardReader MS 0100 606569746801 sde
USB2.0 CardReader SD 0100 606569746801 sdf
[bruno@aboulafia:~]$ ls -l /dev/disk/by-{id,path}
/dev/disk/by-id:
total 0
lrwxrwxrwx 1 root root 9 mars 18 07:37 ata-ASUS_DRW-24F1MT_S1AI6YBG5005ZR -> ../../sr0
lrwxrwxrwx 1 root root 9 mars 18 09:08 ata-SanDisk_SDSSDP064G_151058404141 -> ../../sda
lrwxrwxrwx 1 root root 10 mars 18 09:08 ata-SanDisk_SDSSDP064G_151058404141-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 mars 18 09:08 ata-SanDisk_SDSSDP064G_151058404141-part2 -> ../../sda2
lrwxrwxrwx 1 root root 9 mars 18 09:08 ata-WDC_WD10EFRX-68FYTN0_WD-WCC4J1UFD4LF -> ../../sdb
lrwxrwxrwx 1 root root 10 mars 18 09:08 ata-WDC_WD10EFRX-68FYTN0_WD-WCC4J1UFD4LF-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 9 mars 18 07:37 usb-USB2.0_CardReader_CF_606569746801-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 9 mars 18 07:37 usb-USB2.0_CardReader_MS_606569746801-0:2 -> ../../sde
lrwxrwxrwx 1 root root 9 mars 18 07:37 usb-USB2.0_CardReader_SD_606569746801-0:3 -> ../../sdf
lrwxrwxrwx 1 root root 9 mars 18 07:37 usb-USB2.0_CardReader_SM_XD_606569746801-0:1 -> ../../sdd
lrwxrwxrwx 1 root root 9 mars 18 09:08 wwn-0x50014ee2b6623a59 -> ../../sdb
lrwxrwxrwx 1 root root 10 mars 18 09:08 wwn-0x50014ee2b6623a59-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 9 mars 18 09:08 wwn-0x5001b44e375d4f2d -> ../../sda
lrwxrwxrwx 1 root root 10 mars 18 09:08 wwn-0x5001b44e375d4f2d-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 mars 18 09:08 wwn-0x5001b44e375d4f2d-part2 -> ../../sda2
/dev/disk/by-path:
total 0
lrwxrwxrwx 1 root root 9 mars 18 09:08 pci-0000:00:11.0-ata-2 -> ../../sda
lrwxrwxrwx 1 root root 10 mars 18 09:08 pci-0000:00:11.0-ata-2-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 mars 18 09:08 pci-0000:00:11.0-ata-2-part2 -> ../../sda2
lrwxrwxrwx 1 root root 9 mars 18 09:08 pci-0000:00:11.0-ata-4 -> ../../sdb
lrwxrwxrwx 1 root root 10 mars 18 09:08 pci-0000:00:11.0-ata-4-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:11.0-ata-6 -> ../../sr0
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:0 -> ../../sdc
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:1 -> ../../sdd
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:2 -> ../../sde
lrwxrwxrwx 1 root root 9 mars 18 07:37 pci-0000:00:12.0-usb-0:4:1.0-scsi-0:0:0:3 -> ../../sdf
EDIT : ce qui m'étonnait c'est tu n'aies rien dans /dev/disk/by-path. Je viens de regarder sur un portable et j'y ai bien la liste des périphériques ATA.
Dernière modification par bruno (Le 18/03/2018, à 13:58)
Hors ligne
#9 Le 18/03/2018, à 14:11
- MicP
Re : [Résolu] Établir la liste des volumes USB
Merci pour le retour de commandes
Ma machine est un ASUS G53SW et les disques durs internes (ni le lecteur de cartes SD) ne sont pas listés dans /dev/disk/by-path
et je n'ai encore jamais eu de machines (desktop ou portables) dont les disques durs internes étaient listés dans /dev/disk/by-path
Mes autres portables (EeePC 900, 1001 et 1005) ne listent pas non plus les disques internes dans ce répertoire.
Tant que je ne connecte aucun disque ou clef utilisant l'USB, ou que je n'insère pas une carte SD dans le lecteur (qui est connecté par USB) le sous-répertoire by-path n'existe pas,
et ce sous-répertoire disparaît quand je déconnecte tout ce qui est diske utilisant l'USB.
Mais il semble que la différence vienne surtout du fait que j'utilise debian jessie (<=> ancienne version)
car depuis une machine virtuelle Ubuntu, je constate qu'effectivement les disques "internes" sont aussi listés dans le répertoire /dev/disk/by-path
=======
EDIT : J'ai supprimé le blabla obsolète et inutile qui suivait
Dernière modification par MicP (Le 18/03/2018, à 18:53)
Hors ligne
#10 Le 18/03/2018, à 15:19
- bruno
Re : [Résolu] Établir la liste des volumes USB
J'ai essayé aussi sur 2 serveurs sous Debian et je vois bien les disques ata dans /dev/disk/by-path
Si cela peut aider les liens symboliques dans by-id et by-path sont créés par des règles udev (en particulier les règles présentes dans /lib/udev/rules.d/60-persistent-storage-rules)
Hors ligne
#11 Le 18/03/2018, à 15:36
- Watael
Re : [Résolu] Établir la liste des volumes USB
salut,
avec lsblk ?
n'y a-t-il pas une différence au niveau des numéros Maj:Min entre les disques durs et les autres supports de mémoires de masse ?
lsblk -nd -o name,maj:min
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 18/03/2018, à 16:20
- MicP
Re : [Résolu] Établir la liste des volumes USB
Il y a l'attribut removable dans /sys/block
et VENDOR USB retourné par lsblk
for blkdev in /sys/block/*; do
indev=${blkdev/\/sys\/block/\/dev}
[[ "$(< $blkdev/removable)" = "1" ]] && [[ "$(lsblk $indev -ovendor)" =~ "USB" ]] && echo $indev
done
Mais VENDOR ne convient pas pour récupérer USB
Dernière modification par MicP (Le 18/03/2018, à 16:35)
Hors ligne
#13 Le 18/03/2018, à 16:34
- bruno
Re : [Résolu] Établir la liste des volumes USB
je vais encore faire mon pénible;)
Chez moi la colonne vendor de lsblk ne permet pas de savoir si c'est de l'USB :
$ lsblk -d -o name,vendor
NAME VENDOR
sdb ATA
sr0 ASUS
sdg ST1000DM
sda ATA
Par contre la colonne subsystems donne cette information :
$ lsblk -d -o name,subsystems
NAME SUBSYSTEMS
sdb block:scsi:pci
sr0 block:scsi:pci
sdg block:scsi:usb:pci
sda block:scsi:pci
Dernière modification par bruno (Le 18/03/2018, à 16:47)
Hors ligne
#14 Le 18/03/2018, à 16:37
- MicP
Re : [Résolu] Établir la liste des volumes USB
…je vais encore faire mon pénible …
Non : c'est moi le pénible ,
j'avais posté un peu vite et j'ai modifié mon message entre temps.
En plus, j'utilisais une ancienne version de lsblk : lsblk de util-linux 2.25.2 au lieu de util-linux 2.27.1
dans laquelle la colonne subsystems n'existe pas.
Mais peut-être que comme ça :
lsblk -SpndoNAME,TRAN,RM | awk '$2=="usb" && $3=="1" {print $1}'
=======
@watael : Je vais regarder aussi du côté de major:minor
Dernière modification par MicP (Le 18/03/2018, à 18:33)
Hors ligne
#15 Le 18/03/2018, à 23:40
- Arbiel
Re : [Résolu] Établir la liste des volumes USB
Bonsoir à tous
Merci à vous tous pour vos propositions. Sachez ma surprise de les voir aussi nombreuses.
Je dois vous dire en quoi la liste des volumes amovibles m'intéresse.
Je suis bénévole, avec d'autres, dans un club de loisirs pour adultes handicapés pour lequel j'ai décidé d'utiliser Ubuntu pour faire fonctionner ceux de nos jeux (Club des Cinq, Marine Malice, Sam Pyjam, Valdo, …) qui ne fonctionnent qu'avec de vieux systèmes (Windows 98SE, Windows XP) dans des machines virtuelles VirtualBox. Pour ne perturber ni les adultes handicapés ni les autres bénévoles, j'ai laissé intact le MBR du disque interne et j'ai installé grub sur des clés USB de sorte qu'Ubuntu ne démarre que si une de ces clés est branchée au démarrage.
Toujours pour ne pas perturber les autres bénévoles, je leur ai dit qu'ils pouvaient retirer sans aucune précaution la clé USB dès l'affichage du bureau, et donc sans qu'ils aient à connaître quoi que ce soit d'Ubuntu ; non que je veuille les laisser dans l'ignorance, mais parce que je les sais réticents à s'aventurer sur un domaine qui leur est inconnu. Or, sur mon propre PC que j'utilise pour mes tests et qui lui-même ne démarre avec Ubuntu que par une clé de démarrage, il se trouve que les partitions de ma clé se trouvent montées en /média. J'ai donc décidé d'en démonter les partitions par appel d'un script adéquat dans ~/.config/autostart. D'où mom besoin de constitution de la liste des périphériques USB pour identifier celui qui contient grub et en démonter les partitions montées.
Mais j'ai peut-être également besoin de cette même procédure pour mon PC. Comme je l'ai indiqué dans ma signature, j'utilise encore la 14.04 entre autres du fait d'un problème avec le chiffrement de ma partition système et de ma partition /home. Il se peut que ce problème résulte de ce que les partitions de ma clé de démarrage, dont celle qui contient les clés de chiffrement, soient montées lors de l'exploitation de crypttab.
Dans les diverses solutions que vous m'avez proposées, celle de MicP répond bien à mon besoin, est beaucoup plus rapide que lshw,
remi@remi-Vostro-3550:~$ time readlink /dev/disk/by-path/* | sed -n 's|../../|/dev/|;/[1-9]/!p'
/dev/sdb
/dev/sdc
/dev/sdd
real 0m0.004s
user 0m0.001s
sys 0m0.006s
remi@remi-Vostro-3550:~$
et je la comprends parfaitement, après avoir relu la page man de sed.
En vous remerciant encore pour vos propositions, je vous laisse discuter entre vous de sujets dont la technicité me dépasse.
Je passe le sujet en résolu.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne