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?
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.
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
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'}
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
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.
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
.
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 .
Vous pouvez essayer la commande suivante:
file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq
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.