我正在尝试在Linux上使用Python获取USB闪存驱动器的序列号(或任何基于硬件的唯一标识符)。 我从我在这个SO问题中找到的食谱开始。
该链接中的代码非常适合固定硬盘驱动器。 例如,在我的内部笔记本电脑 SSD 上,它返回:
$ sudo Python clusterTool.py/dev/sda硬盘型号:三星固态硬盘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] 无效参数
文件表明它们是同一种野兽:
$ file/dev/sd{a,b}/dev/sda:块特殊/dev/sdb: block special
我不确定它们有何不同,但它们显然在某个地方有所不同。 这些设备之间有什么区别,有什么方法可以统一获取它们的标识符吗?
这可能有助于 http://www.roman10.net/linux-get-udev-device-information-in-pythonpyudev/将pyudev和python安装工具与syspath一起使用。