因最近工作要求,需要获取Linux
环境上的硬盘序列号,经过多番尝试,最终得到满意的结果,先寻找过程梳理汇总如下。
最开始使用hdparm
命令来获取,它是Linux
上获取或设置硬盘参数的工具,包括测试读写性能以及缓存性能等。在本场景中涉及到的指令为:
hdparm -I /dev/sda
提示结果如下图:
无法获得想要的硬盘序列号,经过一番搜索发现,hdparm
是适用于SATA/IDE接口类型的硬盘,sdparm
适用于SCSI的硬盘,下载sdparm
后使用
sdparm –inquiry –page=sn /dev/sda
结果仍然是
猜测可能是在虚拟机上跑的linux,无法通过这两个命令获取,换个思路继续。
继续尝试使用smartctl
工具来获取,
smartctl -a /dev/sda
也无法获得满意结果。
最后使用lsblk
工具,
lsblk –nodeps -no serial /dev/sda
获取到的结果为空,但通过如下指令:
lsblk –nodeps -no serial /dev/cdrom
/dev/cdrom
是光驱设备,通过上述命令,可以获得光驱设备的序列号,硬盘和光驱同属于存储设备,那么通过上述获取硬盘序列号的命令,应该是可以获取的到,但实际获取为空,这是为什么呢?
总结
在linux上,可以通过lsblk --nodeps -no serial /dev/sda
命令来获得硬盘序列号,注意,在虚拟机上运行的linux,获取到的结果为空。