Odpowiedzi:
Inne rozwiązanie, które nie wymaga uprawnień roota:
udevadm info --query=all --name=/dev/sda | grep ID_SERIAL
To właściwie biblioteka lsblk
, o której wspomina don_crissti, wykorzystuje, ale moja wersja lsblk nie zawiera opcji serial.
grep ID_SCSI_SERIAL
może być tym, co faktycznie podaje numer seryjny napędu, w przeciwieństwie do ogólnoświatowej nazwy (wwn) zgłoszonej pod ID_SERIAL
.
ID_SCSI_SERIAL
ani analogii (nie ID_ATA_SERIAL
): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
W typie terminala:
# hdparm -I /dev/sd? | grep 'Serial\ Number'
EDYCJA: Możesz także użyć lshw
lubsmartctl
lshw
# lshw -class disk
smartctl
# smartctl -i /dev/sda
Jeśli brakuje Ci tych narzędzi, po prostu zainstaluj następujące pakiety
# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
hdparm -I /dev/sd?
hdparm
pakiet (trafnie nazwany) na ARM (Raspbian na Raspberry Pi).
hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'
do korelowania numeru seryjnego z urządzeniem. Wygląda na to, że wynikają pierwotne zapytania.
Nazwa urządzenia 1 i odpowiedni numer seryjny:
lsblk --nodeps -o name,serial
wynik:
NAME SERIAL
sda 0000000012400917BA30
sdb 0000000012400917BA96
dodaj, -n
jeśli nie chcesz drukować wiersza nagłówka:
lsblk --nodeps -no name,serial
wynik:
sda 0000000012400917BA30
sdb 0000000012400917BA96
Podaj device
jako argument, aby uzyskać tylko numer seryjny określonego urządzenia:
lsblk --nodeps -no serial /dev/sda
wynik:
0000000012400917BA30
Pamiętaj, że lsblk
wyświetla informacje o wszystkich dostępnych (lub określonych) urządzeniach blokowych . Teraz dla tych, którzy nie wiedzą, co oznacza ten ostatni termin:
ogólnie, urządzenia blokowe to urządzenia, które przechowują lub przechowują dane. Napędy dyskietek, dyski twarde i napędy CD-ROM są urządzeniami blokowymi. Ale to nie jest problem przy użyciu, lsblk
ponieważ możesz po prostu dodać więcej kolumn, np. type
(Typ urządzenia) i / lub tran
(typ transportu urządzenia) itp .:
lsblk --nodeps -no name, serial, type, tran
sda 0000000012400917BA30 disk sata
sdb 0000000012400917BA96 disk sata
sr0 4B583242334C453233353320 rom usb
Za pomocą hdparm
możesz zobaczyć swój numer seryjny dysku twardego z terminala.
Otwórz terminal i wpisz jako
hdparm -I /dev/sd?|grep -E "Number|/dev"
-I
opcji w hdparm
. Nie chciałbym tego i wolę sposób, w jaki można odczytać ser # bez uprawnień roota. Właśnie dlatego oceniłem tylko rozwiązanie don_crissti. - syntaxerror 57 sekund temu
$ ls -al /dev/disk/by-id/*sda*
Spowoduje to wyświetlenie numeru seryjnego względem znanej nazwy dysku.
by-id
to tylko dowiązania symboliczne, więc i tak ls -al /dev/disk/by-id/
pokaże ci, czego potrzebujesz.
Najłatwiejszy sposób, jaki znam (nie wymaga rootowania):
inxi -Dplxx
Wyprowadza wszystkie dyski, ich numery seryjne i wszelkie dodatkowe informacje. -p dodaje partycje. -l dodaje etykiety. -u dodaje UUID dla partycji.
Poza tym łatwiej jest zapamiętać, heh.
Próba:
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
Pamiętaj, że to odfiltrowuje napędy optyczne. Aby zobaczyć dane optyczne:
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
Zauważ, że w moim systemie Debian lsblk nie pokazuje nic dla seriali, czy to jako root, czy jako użytkownik. Dlatego inxi używa znacznie bardziej niezawodnej metody uzyskiwania tych danych.
lsblk --nodeps -o name,serial
NAME SERIAL
fd0
sda
sdb
sdc
sdd
sr0
sr1
lsblk --version
lsblk from util-linux 2.25.2
Jak widać, lsblk uważa, że napęd optyczny i napęd dyskietek są również dyskami, które w pewnym sensie są, choć nie tak naprawdę, ponieważ nie stają się dyskami, dopóki dysk nie zostanie włożony. I nie pokazuje nic dla numeru seryjnego, a przy okazji również nie pokazuje niczego dla innych wartości, takich jak etykieta. Zdecydowanie błąd, ponieważ te dane są dostępne dla systemu, i tam bezpośrednio dostaje je INXI.
lsblk
nie sądzi, że to dyski, po prostu zawiera listę wszystkich urządzeń blokowych . Zobacz mój zaktualizowany post, aby uzyskać wyjaśnienie. Jeśli chodzi o nie pokazywanie informacji - to dlatego, że używasz debiana, który jest notorius za ich lsblk
zachowanie. Działa absolutnie dobrze na archlinux, więc na pewno nie jest to błąd . Ponadto, inxi
jest to skrypt bash, który używa innych poleceń, aby uzyskać te informacje; nic nie dostaje „bezpośrednio”.
lsblk --nodeps -o name,serial
wyświetla numery seryjne, nie mogę odtworzyć błędu.
Lubię też używać, ls -l /dev/disk/by-id
ponieważ pokaże WWN dysku, jeśli jest dostępny. Numer WWN jest zwykle drukowany na etykiecie dysku, więc łatwo go zidentyfikować.
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'}
To pokaże wwn-id
dla dysku. awk
Filtr, konieczne może być regulowana w zależności od dystrybucji i wersji systemu operacyjnego. Potrzebowałem skryptu rozwiązania, aby przeczytać wwn-id
, który jest potrzebny do ogrodzenia dysku Pacemaker. Jeśli partycje ( /dev/sdX1
np.) Zostały już utworzone, grep
konieczne jest przefiltrowanie danych wyjściowych:
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}