我正在尝试在 Linux 上使用 Python 获取 USB 闪存驱动器的序列号(或任何基于硬件的唯一标识符)。我从我在这个 SO question中找到的食谱开始。
该链接中的代码非常适合固定硬盘驱动器。例如,在我的内部笔记本电脑 SSD 上,它返回:
$ sudo python clusterTool.py /dev/sda 硬盘型号:SAMSUNG SSD PM810 2.5" 7mm 256GB 序列号:S0NUNYAB503012
摇摆!
但是,当我在闪存棒上运行它时,我从 ioctl 收到一个错误,该错误与以下 python 跟踪不协调:
$ sudo python clusterTool.py /dev/sdb 回溯(最近一次通话最后): 文件“clusterTool.py”,第 21 行,在 buf = fcntl.ioctl(fd, HDIO_GET_IDENTITY, " " * sizeof_hd_driveid) IOError:[Errno 22] 无效参数
文件表明它们是同一种野兽:
$ 文件 /dev/sd{a,b} /dev/sda: 块特殊 /dev/sdb: 块特殊
我不确定它们有何不同,但它们显然在某个地方存在分歧。这些设备之间有什么区别,有什么方法可以统一获取它们的标识符?