Yanıtlar:
Kök ayrıcalıkları gerektirmeyen başka bir çözüm:
udevadm info --query=all --name=/dev/sda | grep ID_SERIAL
Bu aslında lsblk
don_crissti tarafından belirtilen kütüphanedir , ancak lsblk versiyonumda seri opsiyonu yoktur.
grep ID_SCSI_SERIAL
altında rapor edilen dünya genelindeki ismin aksine, sürücünün seri numarasını gerçekten veren şey olabilir ID_SERIAL
.
ID_SCSI_SERIAL
benzer veya hiçbir şey yoktur (hayır ID_ATA_SERIAL
): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
Terminal türünde:
# hdparm -I /dev/sd? | grep 'Serial\ Number'
EDIT: Ayrıca kullanabilirsiniz lshw
veyasmartctl
lshw
# lshw -class disk
smartctl
# smartctl -i /dev/sda
Bu araçları kaçırıyorsanız, aşağıdaki paketleri yüklemeniz yeterli
# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw
hdparm -I /dev/sd?
hdparm
paketini ARM'e (Raspberry Pi'de Raspbian ) kurmak zorunda kaldım .
hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'
Seri numarasını cihazla ilişkilendirmek için kullanın . Sonuçta ortaya çıkan orijinal soru taleplerine benziyor.
Cihaz 1 adı ve ilgili seri numarası:
lsblk --nodeps -o name,serial
çıktı:
NAME SERIAL
sda 0000000012400917BA30
sdb 0000000012400917BA96
-n
başlık satırını yazdırmak istemiyorsanız ekleyin :
lsblk --nodeps -no name,serial
çıktı:
sda 0000000012400917BA30
sdb 0000000012400917BA96
Geçiş device
belirli bir cihazın sadece seri numarasını almak için argüman olarak:
lsblk --nodeps -no serial /dev/sda
çıktı:
0000000012400917BA30
Akılda bulundurulması gereken lsblk
tüm (veya belirtilen) blok aygıtları hakkındaki bilgileri listeler . Şimdi, son terimin ne anlama geldiğini bilmeyenler için:
Genel olarak, blok cihazları veri depolayan veya tutan cihazlardır. Disket sürücüler, sabit sürücüler ve CD-ROM sürücüleri tüm blok cihazlardır. Ancak bu lsblk
, örneğin type
(aygıt türü) ve / veya tran
(aygıt taşıma türü) vb.
lsblk --nodeps - ad, seri, tür, tran
sda 0000000012400917BA30 disk sata
sdb 0000000012400917BA96 disk sata
sr0 4B583242334C453233353320 rom usb
lsblk
util-linux sürüm 2.24 veya daha üstü bir sürüm gerektirdiğini unutmayın : github.com/karelzak/util-linux/commit/…
Kullanarak hdparm
Harddisk seri numaranızı terminalden görebilirsiniz.
Terminalinizi açın ve yazın
hdparm -I /dev/sd?|grep -E "Number|/dev"
-I
hdparm
$ ls -al /dev/disk/by-id/*sda*
Bu, bilinen disk adına karşı seri numarasını gösterir.
by-id
Dir'in içeriği sadece sembolik bağlantılar gibi görünüyor , bu yüzden ls -al /dev/disk/by-id/
size neye ihtiyacınız olduğunu gösterecek.
Bildiğim en kolay yol (kök gerektirmez):
inxi -Dplxx
Bu, tüm diskleri, dizilerini ve tüm ek bilgileri verir. -p bölümler ekler. -l etiketleri ekler. -u bölümler için UUID ekler.
Ayrıca hatırlaması çok daha kolay, heh.
Numune:
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
Bunun optik sürücüleri filtrelediğine dikkat edin. Optik verileri görmek için:
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 sistemimde, lsblk'nin ister kök ister kullanıcı olsun, diziler için hiçbir şey göstermediğini unutmayın. Bu nedenle inxi bu verileri almak için çok daha güvenilir bir yöntem kullanıyor.
lsblk --nodeps -o name,serial
NAME SERIAL
fd0
sda
sdb
sdc
sdd
sr0
sr1
lsblk --version
lsblk from util-linux 2.25.2
Gördüğünüz gibi, lsblk için, bir optik sürücünün ve disket sürücünün de bir disk olduğunu düşünüyor, bir anlamda bir disk yerleştirilinceye kadar disk olmadıklarından, aslında bir anlamda olduklarını düşünüyorlar. Seri için hiçbir şey göstermez, bu arada etiket gibi diğer değerler için hiçbir şey göstermez. Bu verinin sistemde mevcut olması nedeniyle kesinlikle bir hata, inxi'nin doğrudan elde ettiği yer burası.
lsblk
disk olduğunu düşünmüyor, yalnızca tüm blok aygıtlarını listeler . Açıklama için güncellenmiş postama bakın. Bilgi göstermemeye gelince - bunun nedeni lsblk
davranışları için saygın olmayan debian kullanmanızdır . Archlinux üzerinde kesinlikle iyi çalışıyor, bu yüzden kesinlikle bir hata değil . Ayrıca, inxi
bu bilgiyi almak için diğer komutları kullanan bir bash betiğidir; "doğrudan" hiçbir şey almaz.
lsblk --nodeps -o name,serial
, seri numaralarını gösteriyor, hatayı çoğaltamıyorum.
Ben de kullanmayı seviyorum ls -l /dev/disk/by-id
çünkü eğer varsa bir diskin WWN'sini gösterecek. WWN genellikle diskin etiketine yazdırılır, bu nedenle tanımlanması kolaydır.
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'}
Bu wwn-id
disk için gösterecektir . awk
Filtre OS dağıtım ve sürümüne bağlı olarak ayarlanması gerekebilir. wwn-id
Pacemaker diski eskrim için gerekli olan komut dosyası için bir çözüme ihtiyacım vardı. Eğer bölümler ( /dev/sdX1
örn.) Önceden yaratılmışsa grep
, çıktıyı filtrelemek için bir başkasına ihtiyaç vardır:
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}