因最近工作要求,需要獲取Linux環境上的硬盤序列號,經過多番嘗試,最終得到滿意的結果,先尋找過程梳理匯總如下。
最開始使用hdparam命令來獲取,它是Linux上獲取或設置硬盤參數的工具,包括測試讀寫性能以及緩存性能等。在本場景中涉及到的指令為:
hdparam -I /dev/sda
提示結果如下圖:

無法獲得想要的硬盤序列號,經過一番搜索發現,hdparam是適用於SATA/IDE接口類型的硬盤,sdparam適用於SCSI的硬盤,下載sdparam后使用
sdparam --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,獲取到的結果為空。
