2010-12-14 4 views

ответ

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); 
} 
2

Вы можете посмотреть файлы чтения/sys, если знаете идентификатор устройства/шины, а также отметьте lsscsi.

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

(1) открытого устройство SCSI. (2) Отправьте команду SCSI «запрос» от ioctl. , то вы можете получить имя поставщика из возвращенных данных.

2

Пакет sg3_utils содержит утилиты, отправляющие команды SCSI на устройства.

После того как мы sg3_utils установлены, команда запуска sg_inq на устройстве вы заинтересованы в

Например:. #sg_inq/DEV/SDA

Приведенная выше команда будет работать стандартный запрос SCSI на устройстве и укажите имя поставщика и другие данные.

1

Ссылаясь на 3-SPC документа SCSI & sg3_utils команды, которые я могу предложить вам следующее:

1) Команда Issue: 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