获取SCSI的供应商名称

时间:2010-12-14 16:03:18

标签: c linux scsi

如何在linux&上获取SCSI设备的供应商名称? C?

6 个答案:

答案 0 :(得分:2)

如果你知道设备/总线ID,你可以查看read / sys文件,同时检查lsscsi

  -> cat /sys/bus/scsi/devices/target13:0:0/13:0:0:0/vendor 
Marvell

答案 1 :(得分:2)

(1)打开SCSI设备。 (2)通过ioctl发送SCSI命令“查询”。 然后你可以从返回的数据中获取供应商名称。

答案 2 :(得分:2)

sg3_utils包中包含将SCSI命令发送到设备的实用程序。

安装sg3_utils后,在您感兴趣的设备上运行sg_inq命令。

例如:#sg_inq / dev / sda

上述命令将在设备上运行标准SCSI查询,并提供供应商名称和其他详细信息。

答案 3 :(得分:1)

您可以使用libudev查找SCSI设备并阅读供应商属性(未经测试):

struct udev *context = udev_new();
struct udev_enumerate *enumerator = udev_enumerate_new(context);
udev_enumerate_add_match_subsystem(enumerator, "scsi");
udev_enumerate_scan_devices(enumerator);
struct udev_list_entry *scsi_devices = udev_enumerate_get_list_entry(enumerator);
struct udev_list_entry *current = 0;
udev_list_entry_foreach(current, scsi_devices) {
    struct udev_device *device = udev_device_new_from_syspath(
            context, udev_list_entry_get_name(current));
    const char *vendor = udev_device_get_sysattr_value(device, "vendor");
    printf("%s\n", vendor);
}

答案 4 :(得分:1)

参考SCSI SPC-3文件& sg3_utils命令我建议您关注:

1)发出命令:sg_inq -p 0x00 / dev / your_device_name

这将为您的设备提供支持的页面。

2)如果上面的命令显示0x83作为支持的页面之一,则发出命令:

sudo sg_inq -p 0x83 / dev / your_device_name

这将显示供应商信息。

P.S - > your_device_name例如sr1,sda1

请使用此链接获取获取这些类型信息的脚本:

http://a-saurabh.blogspot.in/2014/06/sometimes-we-want-to-query-about-our.html

答案 5 :(得分:0)

您可以通过sg3_utils之类的工具使用scsi查询,也可以在sys / bus / scsi / devices / xxxxx下找到它