Как я могу получить имя поставщика устройства SCSI в Linux и c?
Получить имя поставщика SCSI
Ответы (6)
Вы можете использовать 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 на устройстве и предоставит имя поставщика и другие сведения.
Ссылаясь на документ SCSI SPC-3 и команды sg3_utils, я могу предложить вам следующее:
1) Введите команду: sg_inq -p 0x00 /dev/your_device_name
Это даст вам страницы, поддерживаемые вашим устройством.
2) Если приведенная выше команда отображает 0x83 как одну из поддерживаемых страниц, введите команду:
sudo sg_inq -p 0x83 /dev/имя_вашего_устройства
Это отобразит информацию о поставщике.
P.S -> your_device_name например. ср1, сда1
Пожалуйста, используйте эту ссылку, чтобы получить скрипт для получения информации такого типа:
http://a-saurabh.blogspot.in/2014/06/sometimes-we-want-to-query-about-our.html
вы можете использовать запрос scsi с помощью таких инструментов, как sg3_utils, или просто найти его в sys/bus/scsi/devices/xxxxx