Respuestas:
Otra solución que no requiere privilegios de root:
udevadm info --query=all --name=/dev/sda | grep ID_SERIAL
Esta es en realidad la biblioteca que lsblk
, mencionada por don_crissti, aprovecha, pero mi versión de lsblk no incluye la opción de serie.
grep ID_SCSI_SERIAL
puede ser lo que realmente da el número de serie de la unidad, a diferencia del nombre mundial (wwn) que se informa en ID_SERIAL
.
ID_SCSI_SERIAL
ni nada análogo (no ID_ATA_SERIAL
): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
En tipo de terminal:
# hdparm -I /dev/sd? | grep 'Serial\ Number'
EDITAR: también puedes usar lshw
osmartctl
lshw
# lshw -class disk
smartctl
# smartctl -i /dev/sda
Si le faltan esas herramientas, simplemente instale los siguientes paquetes
# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
hdparm -I /dev/sd?
hdparm
paquete (acertadamente nombrado) en ARM (Raspbian en Raspberry Pi).
hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'
para correlacionar el número de serie con el dispositivo. Parece que la pregunta original solicita ese resultado.
Nombre del dispositivo 1 y número de serie correspondiente:
lsblk --nodeps -o name,serial
salida:
NAME SERIAL
sda 0000000012400917BA30
sdb 0000000012400917BA96
agregue -n
si no desea imprimir la línea del encabezado:
lsblk --nodeps -no name,serial
salida:
sda 0000000012400917BA30
sdb 0000000012400917BA96
Pase device
como argumento para obtener solo el número de serie de un dispositivo específico:
lsblk --nodeps -no serial /dev/sda
salida:
0000000012400917BA30
Tenga en cuenta las lsblk
listas de información sobre todos los dispositivos de bloque disponibles (o los especificados) . Ahora, para aquellos que no saben lo que significa el último término:
en general, los dispositivos de bloque son dispositivos que almacenan o almacenan datos. Las unidades de disquete, los discos duros y las unidades de CD-ROM son todos dispositivos de bloque. Pero eso no es un problema cuando se usa, lsblk
ya que simplemente puede agregar más columnas, por ejemplo type
(tipo de dispositivo) y / o tran
(tipo de transporte del dispositivo), etc.
lsblk --nodeps -no name, serial, type, tran
sda 0000000012400917BA30 disk sata
sdb 0000000012400917BA96 disk sata
sr0 4B583242334C453233353320 rom usb
lsblk
de la versión 2.24 de util-linux o superior: github.com/karelzak/util-linux/commit/…
Al usar hdparm
puede ver su número de serie del disco duro desde el terminal.
Abra su terminal y escriba como
hdparm -I /dev/sd?|grep -E "Number|/dev"
-I
opción hdparm
. Tampoco querría eso y preferiría una forma de leer el número de serie sin permisos de root. Es por eso que he votado solo por la solución de don_crissti. - syntaxerror hace 57 segundos
$ ls -al /dev/disk/by-id/*sda*
Esto le mostrará el número de serie contra el nombre del disco familiar.
by-id
directorio son solo enlaces simbólicos, por lo que ls -al /dev/disk/by-id/
le mostrará lo que necesita de todos modos.
La forma más fácil que sé (no requiere root):
inxi -Dplxx
Eso genera todos los discos, sus publicaciones seriadas y cualquier información adicional. -p agrega particiones. -l agrega etiquetas. -u agrega UUID para las particiones.
Además, es mucho más fácil de recordar, je.
Muestra:
inxi -Dxx
Drives: HDD Total Size: 810.2GB (42.9% used)
ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
Tenga en cuenta que esto filtra las unidades ópticas. Para ver datos ópticos:
inxi -Dxxd
Drives: HDD Total Size: 810.2GB (42.9% used)
ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
Optical-1: /dev/sr0 model: LITE-ON DVDRW SOHW-1693S
rev: KS09 dev-links: dvd,dvdrw
Features: speed: 48x multisession: yes
audio: yes dvd: yes rw: cd-r,cd-rw,dvd-r state: running
Optical-2: /dev/sr1 model: LITE-ON LTR-52327S rev: QS0C dev-links: cdrom,cdrw
Features: speed: 52x multisession: yes
audio: yes dvd: no rw: cd-r,cd-rw state: running
Tenga en cuenta que en mi sistema Debian, lsblk no muestra nada para las publicaciones seriadas, ya sea como root o como usuario. Es por eso que inxi usa un método mucho más confiable para obtener esos datos.
lsblk --nodeps -o name,serial
NAME SERIAL
fd0
sda
sdb
sdc
sdd
sr0
sr1
lsblk --version
lsblk from util-linux 2.25.2
Como puede ver, para lsblk, cree que una unidad óptica y una unidad de disquete también son discos, que en cierto sentido lo son, aunque en realidad no lo son, ya que no se convierten en discos hasta que se inserta un disco. Y no muestra nada para el serial, tampoco muestra nada para otros valores, como la etiqueta. Definitivamente un error ya que estos datos están disponibles para el sistema, ahí es donde inxi lo obtiene, directamente.
lsblk
no cree que sean discos, simplemente enumera todos los dispositivos de bloque . Vea mi publicación actualizada para una aclaración. En cuanto a no mostrar información, esto se debe a que está utilizando Debian, que es notorio para su lsblk
comportamiento. Funciona absolutamente bien en archlinux, así que definitivamente no es un error . Además, inxi
es solo un script bash que usa otros comandos para obtener esa información; no recibe nada "directamente".
lsblk --nodeps -o name,serial
muestra los números de serie, no puedo reproducir el error.
También me gusta usar ls -l /dev/disk/by-id
porque mostrará el WWN de un disco si está disponible. El WWN generalmente está impreso en la etiqueta del disco, por lo que es fácil de identificar.
root@server (16:27:58):~# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N -> ../../sda
lrwxrwxrwx 1 root root 10 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N-part2 -> ../../sda2
...
lrwxrwxrwx 1 root root 9 Dec 20 01:51 wwn-0x50014ee25ffd0a5c -> ../../sdc
lrwxrwxrwx 1 root root 9 Dec 20 01:51 wwn-0x50014ee2b554c0b4 -> ../../sdb
lrwxrwxrwx 1 root root 9 Dec 20 01:51 wwn-0x5002538d427700f0 -> ../../sda
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | awk '{print $9'}
Esto mostrará el wwn-id
para el disco. Es awk
posible que sea necesario ajustar el filtro según la distribución y la versión del sistema operativo. Necesitaba una solución con script para leer el wwn-id
, que es necesario para el cercado de disco de Pacemaker. Si /dev/sdX1
ya se han creado particiones ( por ejemplo), grep
se necesita otra para filtrar la salida:
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}