Получить название поставщика SCSI
Как я могу получить название поставщика устройства SCSI на Linux & C?
5 ответов
Вы можете использовать libudev, чтобы найти устройства SCSI и прочитать атрибут vendor (не проверено):
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);
}
(1) открыть устройство SCSI. (2) Отправить команду SCSI "запрос" по ioctl. затем вы можете получить имя поставщика из возвращенных данных.
Вы можете просмотреть файлы /sys, если знаете идентификатор устройства / шины, также проверьте lsscsi.
-> cat /sys/bus/scsi/devices/target13:0:0/13:0:0:0/vendor
Marvell
Пакет sg3_utils содержит утилиты, которые отправляют команды SCSI на устройства.
После того, как мы установим sg3_utils, запустите команду sg_inq на интересующем вас устройстве.
Например: #sg_inq /dev/sda
Приведенная выше команда выполнит стандартный запрос SCSI на устройстве и предоставит имя поставщика и другие сведения.
Ссылаясь на команды 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
Это отобразит информацию о поставщике.
PS -> your_device_name например sr1, sda1
Пожалуйста, используйте эту ссылку, чтобы получить скрипт для получения такого типа информации:
http://a-saurabh.blogspot.in/2014/06/sometimes-we-want-to-query-about-our.html
Вы можете использовать scsi-запрос с помощью таких инструментов, как sg3_utils, или просто найти его в sys/bus/scsi/devices/xxxxx