web-dev-qa-db-fra.com

Recherche de tous les périphériques de stockage connectés à une machine Linux

J'ai besoin de trouver tous les périphériques de stockage inscriptibles attachés à une machine donnée, qu'ils soient montés ou non.

La meilleure façon de procéder serait d'essayer chaque entrée dans /dev qui correspond à un périphérique accessible en écriture (hd * et sd *).

Existe-t-il une meilleure solution ou dois-je m'en tenir à celle-ci?

34
warren

Si l'on s'intéresse uniquement aux périphériques de stockage block, on peut utiliser lsblk à partir du package util-linux largement disponible:

$ lsblk -o KNAME,TYPE,SIZE,MODEL
KNAME TYPE   SIZE MODEL
sda   disk 149.1G Toshiba MK1637GS
sda1  part  23.3G 
sda2  part    28G 
sda3  part  93.6G 
sda4  part   4.3G 
sr0   rom   1024M CD/DVDW TS-L632M

Il se prête bien aux scripts avec de nombreuses autres colonnes disponibles.

51
K3---rnc

Vous pouvez parcourir la sortie de lshw et extraire des détails sur les périphériques de la classe disk ou tape (et peut-être d'autres - la classe storage vous donne des détails sur contrôleurs de stockage, scsi, sata, sas, etc.).

par exemple.

lshw -class disk -class tape

Le -short option donne un joli résumé compact. par exemple. sur mon serveur/poste de travail/box expérimental zfsonlinux (malheureusement pas de périphérique à bande):

 # lshw -class tape -class disk -class storage -short 
 H/W path Device Class Description 
 ================ ========================================== 
/0/100/4/0 stockage JMB362 SATA Controller 
/0/100/5/0 scsi10 stockage JMB362 SATA Controller 
/0/100/5/0/0.0.0/dev/sdc disk 120GB Patriot Wildfire 
/0/100/b/0 stockage scsi1 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] 
/0/100/b/0/0.0.0/dev/disque sdd 1 To WDC WD10EARS-00Y 
/0/100/b/0/0,1.0/dev/sde disque 1 To WDC WD10EACS-00Z 
/0/100/b/0/0,2. 0/dev/sdf disk 1TB WDC WD10EACS-00Z 
/0/100/b/0/0.3.0/dev/sdg disk 1TB ST31000528AS 
/0/100/b/0/0.4 .0/dev/sdh disk 1TB ST31000528AS 
/0/100/b/0/0.5.0/dev/sdi disk 1TB ST31000528AS 
/0/100/b/0/0.6.0/dev/sdj disk 1 To ST31000528AS 
/0/100/11 stockage scsi2 SB7x0/SB8x0/SB9x0 Contrôleur SATA [mode AHCI] 
/0/100/11/0/dev/sda disque 128 Go Patriot Torqx 2 
/0/100/11/1/dev/sdb disk 1 To ST31000528AS 
/0/1 scsi11 storage 
/0/1/0.0.0/dev/sdk disk 1967MB SCSI Disk 
/0/1/0.0.1/dev/sdl disk SCSI Disk 
/0/1/0.0.2/dev/sdm disk SCSI disk 
/0/1/0.0.3/dev/sdn disk Disque SCSI 
/0/2 stockage scsi66 
/0/2/0.0.0/dev/sdo disque SCSI Disk 
/0/3 stockage scsi67 
/0/3/0.0.0/dev/sdp disque 4057 Mo Disque SCSI 
 

Les appareils/0/1 sont en fait un lecteur de carte USB (il y a une carte SD de 2 Go connectée à l'un des emplacements), et l'appareil/0/2 est mon Android Android branché L'appareil 0/3 est une clé USB à mémoire flash de 4 Go.

lshw peut produire du texte brut, des sorties html, xml et json. Il peut également vider les détails du matériel dans un format de base de données sqlite.

Il est empaqueté pour debian et la plupart des autres distributions. La page d'accueil et la source sont à http://ezix.org/project/wiki/HardwareLiSter

13
cas

Vous pouvez utiliser lsblk pour répertorier tous les périphériques de bloc, ainsi que si chaque périphérique est en lecture seule ou non.

Vous pouvez ensuite utiliser grep et awk pour imprimer les noms des périphériques de bloc qui ne sont pas en lecture seule:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}
5
Jason Hobbs

Veuillez essayer cette commande

ls -l /dev /dev/mapper |grep '^b'

Il vous listera tous les périphériques bloqués dans votre système

5
Serge

lsblk listera tous les périphériques de stockage en mode bloc.

fdisk -l répertoriera toutes les partitions sur tous les périphériques répertoriés dans /proc/partitions

lshw -short vous donnera des informations sur tout le matériel (sauf peut-être le firewire) du système.

4
Simon Woodside

Si, selon votre réponse à Derobert, vous cherchez quelque chose qui répertorie les lecteurs de bande et imprimantes, vous pourriez être intéressé par lsdev, lsusb et lspci.

3
colons

Vous pouvez utiliser hwinfo pour répertorier tous les disques ( documentation ).

hwinfo --block --short donne un aperçu:

disk:
  /dev/sdb             WDC WD3200AAKS-7
  /dev/sda             SAMSUNG HD103UJ
partition:
  /dev/sdb1            Partition
  /dev/sdb2            Partition
  /dev/sda1            Partition
cdrom:
  /dev/sr1             TSSTcorp DVD+-RW TS-H653B
  /dev/sr0             HL-DT-ST DVD-ROM GDRH20N

hwinfo --disk donne plus de détails pour chaque disque.

Pour info: sur certaines distributions Linux comme Ubuntus 14.04 et supérieur, hwinfo n'est pas présent dans le dépôt officiel .

2
Franck Dernoncourt

Vous pouvez essayer la commande suivante:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq
2
Gilles Quenot

J'ai constaté que fdisk et lsblk ne sont pas disponibles dans le terminal virtuel pour le programme d'installation Debian. Dans ce cas, j'utilise blkid, qui obtient l'UUID pour les périphériques de stockage de blocs.

0
ryanjdillon