4

我正在尝试在 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: 块特殊

我不确定它们有何不同,但它们显然在某个地方存在分歧。这些设备之间有什么区别,有什么方法可以统一获取它们的标识符?

4

1 回答 1

0

这可能有助于http://www.roman10.net/linux-get-udev-device-information-in-pythonpyudev/使用带有 syspath 的 pyudev 和 python 设置工具。

于 2013-09-10T19:29:32.510 回答