0

我正在尝试获取通过 SATA 转 USB 适配器连接的 USB 硬盘驱动器的身份。我编写的小程序是用 Python 编写的,它使用了这个:

def getID(dev):
    HDIO_GET_IDENTITY = 0x030d
    with open(dev, 'r') as fd:
        buf = fcntl.ioctl(fd, HDIO_GET_IDENTITY, ' ' * 512)
        fields = struct.unpack_from(struct_hd_driveid, buf)
        serial_no = fields[10].strip()
        fw_rev = fields[14].strip()
        model = fields[15].strip()
    return (serial_no, fw_rev, model)

我在这里找到的方法

该方法在我的内部硬盘上成功运行,但我得到了

IOError: [Errno 22] Invalid argument

在我的 USB 连接硬盘上运行它时。

我找不到与此相关的任何内容 - 我假设 USB 连接的 HDD 的操作代码可能不同......

我差点忘了说我是从 Ubuntu 运行它的

Linux dragosmc-Lenovo-V570 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

谢谢,dragosmc。

4

1 回答 1

1

HDIO_GET_IDENTITY 似乎是特定于 IDE/ATA 的。

大容量存储将 ATA 设备抽象为 SCSI 设备,因此您应该查看:

  • udev
  • sg3-utils / libsg3
  • sysfs (linux下)
  • 更复杂的 scsi 命令

请参阅获取 SCSI 的供应商名称

于 2015-12-04T16:17:24.223 回答