Ответы:
Другое решение, которое не требует привилегий root:
udevadm info --query=all --name=/dev/sda | grep ID_SERIAL
На самом деле это библиотека, которую lsblk
упоминает don_crissti, но моя версия lsblk не включает опцию serial.
grep ID_SCSI_SERIAL
может быть тем, что на самом деле дает серийный номер диска, в отличие от всемирного имени (wwn), указанного в разделе ID_SERIAL
.
ID_SCSI_SERIAL
ни чего-либо аналогичного (нет ID_ATA_SERIAL
): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
В типе терминала:
# hdparm -I /dev/sd? | grep 'Serial\ Number'
РЕДАКТИРОВАТЬ: Вы также можете использовать lshw
илиsmartctl
lshw
# lshw -class disk
smartctl
# smartctl -i /dev/sda
Если вам не хватает этих инструментов, просто установите следующие пакеты
# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
hdparm -I /dev/sd?
hdparm
пакет (apt-ly named) на ARM (Raspbian на Raspberry Pi).
hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'
для сопоставления серийного номера с устройством. Похоже, что исходные запросы вопроса, что результат.
Название устройства 1 и соответствующий серийный номер:
lsblk --nodeps -o name,serial
выход:
NAME SERIAL
sda 0000000012400917BA30
sdb 0000000012400917BA96
добавьте, -n
если вы не хотите печатать строку заголовка:
lsblk --nodeps -no name,serial
выход:
sda 0000000012400917BA30
sdb 0000000012400917BA96
Передайте в device
качестве аргумента, чтобы получить только серийный номер определенного устройства:
lsblk --nodeps -no serial /dev/sda
выход:
0000000012400917BA30
Имейте в виду lsblk
списки информации обо всех доступных (или указанных) блочных устройствах . Теперь для тех, кто не знает, что означает этот последний термин.
В общем, блочные устройства - это устройства, которые хранят или хранят данные. Дисководы для гибких дисков, жесткие диски и приводы CD-ROM являются блочными устройствами. Но это не проблема при использовании, так lsblk
как вы можете просто добавить больше столбцов, например type
(тип устройства) и / или tran
(тип транспорта устройства) и т. Д .:
lsblk --nodeps -no name, serial, type, tran
sda 0000000012400917BA30 disk sata
sdb 0000000012400917BA96 disk sata
sr0 4B583242334C453233353320 rom usb
С помощью hdparm
вы можете увидеть свой серийный номер жесткого диска с терминала.
Откройте свой терминал и введите как
hdparm -I /dev/sd?|grep -E "Number|/dev"
-I
опцию в hdparm
. Я бы тоже этого не хотел и предпочел бы способ считывания ser # без прав root. Вот почему я проголосовал только за решение don_crissti. - syntaxerror 57 секунд назад
$ ls -al /dev/disk/by-id/*sda*
Это покажет вам серийный номер против знакомого имени диска.
by-id
каталога - это просто символические ссылки, поэтому в ls -al /dev/disk/by-id/
любом случае покажет вам, что вам нужно.
Самый простой способ, который я знаю (не требует рута):
inxi -Dplxx
Это выводит все диски, их серийные номера и любую дополнительную информацию. -p добавляет разделы. -l добавляет ярлыки. -u добавляет UUID для разделов.
Плюс намного легче запомнить, хе.
Образец:
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
Обратите внимание, что это отфильтровывает оптические приводы. Чтобы увидеть оптические данные:
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
Обратите внимание, что в моей системе Debian lsblk не показывает ничего для сериалов, будь то root или пользователь. Вот почему inxi использует гораздо более надежный метод для получения этих данных.
lsblk --nodeps -o name,serial
NAME SERIAL
fd0
sda
sdb
sdc
sdd
sr0
sr1
lsblk --version
lsblk from util-linux 2.25.2
Как вы видите, для lsblk он думает, что оптический привод и дисковод гибких дисков также являются дисками, которые в некотором смысле являются, хотя и не совсем, поскольку они не становятся дисками, пока диск не вставлен. И он ничего не показывает для последовательных, он также, кстати, ничего не показывает для других значений, таких как метка. Определенно ошибка, так как эти данные доступны системе, вот где inxi получает их напрямую.
lsblk
она не думает, что это диски, а просто перечисляет все блочные устройства . Смотрите мой обновленный пост для уточнения. Что касается не показа информации - это потому, что вы используете debian, который известен своим lsblk
поведением. На archlinux он работает абсолютно нормально, поэтому определенно не ошибка . Кроме того, inxi
это всего лишь скрипт bash, который использует другие команды для получения этой информации; он ничего не получает "напрямую".
lsblk --nodeps -o name,serial
отображает серийные номера, я не могу воспроизвести ошибку.
Мне также нравится использовать, ls -l /dev/disk/by-id
потому что это покажет WWN диска, если доступно. WWN обычно печатается на этикетке диска, поэтому его легко идентифицировать.
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'}
Это покажет wwn-id
для диска. awk
Фильтр может потребоваться корректировка в зависимости от дистрибутива операционной системы и версии. Мне нужно было зашифрованное решение для чтения wwn-id
, которое необходимо для ограждения диска Pacemaker. Если разделы ( /dev/sdX1
например) уже созданы grep
, для фильтрации выходных данных необходим другой :
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}