使用bash获取硬盘驱动器型号名称

使用bash获取硬盘驱动器型号名称,bash,terminal,Bash,Terminal,我想使用bash获取硬盘的各种型号名称 如果只有一个,我可以这样做,使用hwinfo: hwinfo --ide|grep Model|sed -ne '/Model/s/.*Model: "\([^"]*\)".*/\1/p' 但当不止一个的时候,这显然是失败的。当有多个硬盘驱动器时,一个常规的hwinfo输出如下: [faidoc@Delorean ~]$ hwinfo --ide 11: IDE 200.0: 10600 Disk

我想使用bash获取硬盘的各种型号名称

如果只有一个,我可以这样做,使用hwinfo:

hwinfo --ide|grep Model|sed -ne '/Model/s/.*Model: "\([^"]*\)".*/\1/p'
但当不止一个的时候,这显然是失败的。当有多个硬盘驱动器时,一个常规的hwinfo输出如下:

[faidoc@Delorean ~]$ hwinfo --ide
11: IDE 200.0: 10600 Disk                                       
  [Created at block.245]
  Unique ID: 3OOL.XFCtBh10jZ2
  Parent ID: qnJ_.3_X41NtKT36
  SysFS ID: /class/block/sda
  SysFS BusID: 2:0:0:0
  SysFS Device Link: /devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0
  Hardware Class: disk
  Model: "VBOX HARDDISK"
  Vendor: "VBOX"
  Device: "HARDDISK"
  Revision: "1.0"
  Serial ID: "VBfa9b1456-03d78f51"
  Driver: "ahci", "sd"
  Driver Modules: "ahci"
  Device File: /dev/sda
  Device Files: /dev/sda, /dev/disk/by-id/ata-VBOX_HARDDISK_VBfa9b1456-03d78f51
  Device Number: block 8:0-8:15
  BIOS id: 0x80
  Geometry (Logical): CHS 1305/255/63
  Size: 20971520 sectors a 512 bytes
  Capacity: 10 GB (10737418240 bytes)
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #10 (SATA controller)

12: IDE 300.0: 10600 Disk
  [Created at block.245]
  Unique ID: WZeP.0xN7VsONW+D
  Parent ID: qnJ_.3_X41NtKT36
  SysFS ID: /class/block/sdb
  SysFS BusID: 3:0:0:0
  SysFS Device Link: /devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0
  Hardware Class: disk
  Model: "VBOX HARDDISK"
  Vendor: "VBOX"
  Device: "HARDDISK"
  Revision: "1.0"
  Serial ID: "VB350f9911-48221ae2"
  Driver: "ahci", "sd"
  Driver Modules: "ahci"
  Device File: /dev/sdb
  Device Files: /dev/sdb, /dev/disk/by-id/ata-VBOX_HARDDISK_VB350f9911-48221ae2
  Device Number: block 8:16-8:31
  BIOS id: 0x81
  Geometry (Logical): CHS 2349/255/63
  Size: 37748736 sectors a 512 bytes
  Capacity: 18 GB (19327352832 bytes)
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #10 (SATA controller)
每个驱动器都有一个“11:”或“12:”这样,如果我能一次得到一个,那就是解决方案

有什么想法吗


谢谢

如果你知道你想要哪一个,一个非常简单的方法是
grep-A8-E'^11:'

hwinfo --ide|grep -A8 -E '^11:'|grep Model|sed -ne '/Model/s/.*Model: "\([^"]*\)".*/\1/p'
grep
上的-A标志将在“匹配”之后以及匹配的行中获取那么多行


还有-B表示“Before”,而-C表示“Context”

您可以通过以下方式获取信息:

hdparm -i /dev/sda | grep -i model
或者,如果只需要模型名称:

hdparm -i /dev/sda | perl -n -e 'print "$1\n" if (m/model=(.+?),/i);'

下面是一个快速而肮脏的
awk
语句,可能会有所帮助:

hwinfo --ide | awk '{ if($2=="IDE"){ide=$3} if($1=="Model:"){print "IDE " ide $0} }'
基本上在每行的第二个单词中搜索模式“IDE”。 如果它找到了,它将该行的第三个字存储在名为“ide”的变量中

然后在每行的第一个单词中搜索“Model:”。 如果找到,它将打印它先前存储的IDE以及包含模型名称的整行

因此,您在输出中得到了名称和IDE位置:

IDE 200.0:  Model: "VBOX HARDDISK"
IDE 300.0:  Model: "VBOX HARDDISK"
无论连接了多少个磁盘,它都应该工作