Как получить имя поставщика SCSI-устройства на linux & c?Получить имя поставщика SCSI
ответ
Вы можете использовать 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);
}
Вы можете посмотреть файлы чтения/sys, если знаете идентификатор устройства/шины, а также отметьте lsscsi.
-> cat /sys/bus/scsi/devices/target13:0:0/13:0:0:0/vendor
Marvell
(1) открытого устройство SCSI. (2) Отправьте команду SCSI «запрос» от ioctl. , то вы можете получить имя поставщика из возвращенных данных.
Пакет sg3_utils содержит утилиты, отправляющие команды SCSI на устройства.
После того как мы sg3_utils установлены, команда запуска sg_inq на устройстве вы заинтересованы в
Например:. #sg_inq/DEV/SDA
Приведенная выше команда будет работать стандартный запрос SCSI на устройстве и укажите имя поставщика и другие данные.
Ссылаясь на 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