Получить название поставщика SCSI - PullRequest
0 голосов
/ 14 декабря 2010

Как я могу получить название поставщика устройства SCSI на linux & c?

Ответы [ 6 ]

2 голосов
/ 29 октября 2012

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

Как только мы установим sg3_utils, запустите команду sg_inq на интересующем вас устройстве.

Например: #sg_inq / dev / sda

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

2 голосов
/ 20 октября 2011

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

2 голосов
/ 14 декабря 2010

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

  -> cat /sys/bus/scsi/devices/target13:0:0/13:0:0:0/vendor 
Marvell
1 голос
/ 06 марта 2014

Обращаясь к командам SCSI SPC-3 document & 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 / порой мы-хочу-чтобы-запрос-о-our.html

1 голос
/ 14 декабря 2010

Вы можете использовать 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);
}
0 голосов
/ 01 апреля 2019

вы можете использовать запрос scsi с помощью таких инструментов, как sg3_utils, или просто найти его в sys / bus / scsi / devices / xxxxx

...