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 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 smile

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 smile ,
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