我正在尝试使用Linux上的Python获取USB闪存驱动器的序列号(或任何基于硬件的唯一标识符)。我从this SO question中找到的食谱开始。
该链接中的代码非常适合固定硬盘。例如,在我的内置笔记本电脑SSD上,它返回:
$ sudo python clusterTool.py /dev/sda Hard Disk Model: SAMSUNG SSD PM810 2.5" 7mm 256GB Serial Number: S0NUNYAB503012
摇摆!
然而,当我在一个闪存棒上运行它时,我从ioctl得到一个错误,该错误正在被非常地跟随下面的python跟踪:
$ sudo python clusterTool.py /dev/sdb Traceback (most recent call last): File "clusterTool.py", line 21, in buf = fcntl.ioctl(fd, HDIO_GET_IDENTITY, " " * sizeof_hd_driveid) IOError: [Errno 22] Invalid argument
文件暗示他们是同一种野兽:
$ file /dev/sd{a,b} /dev/sda: block special /dev/sdb: block special
我不确定它们有何不同,但它们显然在某处分歧。这些设备之间有什么区别,有什么办法可以统一获取标识符吗?
答案 0 :(得分:0)
这可能有助于http://www.roman10.net/linux-get-udev-device-information-in-pythonpyudev/使用syspath的pyudev和python设置工具。