Эквивалент команды Solaris “croinfo -hO Dc” в Linux

Вопрос или проблема

В прошлом я использовал скрипт в Solaris 11. В этом скрипте я использовал команду croinfo -hO Dc (croinfo означает информация о шасси, разъеме и занятых местах). Он генерировал следующий вывод:

root@my-host:~# croinfo -hO Dc
/dev/chassis/SYS/DBP/HDD0/NVME/disk:c2t1d0
/dev/chassis/SYS/DBP/HDD0/NVME/hba:
/dev/chassis/SYS/DBP/HDD1/NVME/disk:c1t1d0
/dev/chassis/SYS/DBP/HDD1/NVME/hb
.... дальше ...

Теперь мне нужно запустить этот скрипт в Linux. Скрипт не сработает, потому что команда croinfo не существует в Linux. Мне точно нужен вывод, похожий на croinfo -hO Dc, чтобы проанализировать его и получить необходимую информацию.

Существует ли аналог команды Solaris “croinfo” в Linux? Я не смог найти такую команду. Можно ли использовать несколько команд Linux, чтобы получить вывод, похожий на croinfo -hO Dc (где -O Dc запрашивает информацию типа devchassis и occupant-compdev в виде, пригодном для разбора, а -h подавляет заголовки)?

В Linux нет прямого аналога croinfo. Многие из этих данных можно найти в /sys и /dev, а затем вы можете отформатировать их как вам угодно. Например, чтобы получить информацию NVMe, как показано в вашем вопросе, вы можете посмотреть, что находится в /sys/class/nvme/. Точно так же, для определения устройств с конкретными данными о их слотах или контроллерах, вы можете исследовать пути в /sys/class/scsi_host, /sys/class/block или /sys/class/scsi_disk.

Например, предположим, что вы хотите найти детали о конкретном NVMe-устройстве. Вы можете найти информацию о его контроллере и других деталях в /sys/class/nvme:

ls /sys/class/nvme/nvme0/

Этот каталог содержит ссылки на подкаталоги, которые предоставляют детали о контроллере NVMe устройства, пространстве имен и такой информации, как информация PCI.

В качестве примера, который вы можете экстраполировать на другие виды аппаратного обеспечения, чтобы определить слот или информацию PCI для nvme0n1, следуйте символической ссылке от /sys/class/nvme/nvme0/device к его PCI слоту:

% readlink -f /sys/class/nvme/nvme0/device
/sys/devices/pci0000:00/0000:00:1f.0/0000:02:00.0

Путь показывает точный PCI адрес, который вы можете использовать для поиска дополнительных деталей, включая такие вещи, как расположение слота.

Для SCSI-дисков (например, /dev/sda) вы можете найти больше информации в /sys/class/scsi_disk, и так далее для других аппаратных устройств.

Используя такие данные, вы можете имитировать вывод croinfo, извлекая данные и форматируя их соответственно.

Ответ или решение

Вопрос о том, как получить эквивалент команды Solaris croinfo -hO Dc в Linux, требует более глубокого анализа возможностей операционной системы, так как Linux не имеет прямого аналога данной команды. Однако с помощью нескольких встроенных инструментов и доступных директорий можно получить информацию, подобную той, что генерируется в Solaris.

1. Понимание команды croinfo

Команда croinfo в Solaris позволяет получить информацию о шасси, разъемах и их содержимом. Параметры -h и -O Dc указывают на необходимость подавления заголовков и форматирования вывода в парсируемом виде соответственно. Поэтому перед нами стоит задача извлечь такие же данные из Linux.

2. Использование команд Linux для аналогичного вывода

В Linux информация о подключенных устройствах и их конфигурации хранится в виртуальной файловой системе /sys. Ниже перечислены несколько команд и подходов, которые можно использовать для получения подобной информации.

2.1 Доступ к информации о NVMe-устройствах

Для получения информации о NVMe-устройствах можно использовать следующие команды:

ls /sys/class/nvme/

Это выведет список всех NVMe-устройств. Подкаталоги содержат ссылки на процессоры и пространства имен:

readlink -f /sys/class/nvme/nvme0/device

Эта команда покажет путь к PCI-устройству, что позволит вам выяснить информации о его слоте.

2.2 Получение информации о SCSI устройствах

Для SCSI-накопителей можно использовать следующие команды:

ls /sys/class/block/

Эта команда покажет все блочные устройства, включая SCSI-диски, например, /dev/sda. Далее вы можете воспользоваться:

cat /sys/class/block/sda/device/scsi_device

Это позволит посчитать уникальный идентификатор SCSI, который предоставит информацию об устройстве.

2.3 Объединение данных

Теперь, чтобы получить данные, аналогичные croinfo -hO Dc, нужно объединить информацию из разных команд и отформатировать вывод. Например, можем использовать awk или sed для обработки строк с информацией или написать простой bash-скрипт, чтобы обобщить и вывести информацию в нужном формате. Пример простого скрипта:

#!/bin/bash

for nvme in /sys/class/nvme/nvme*/; do
    device=$(readlink -f "$nvme/device")
    echo "$device"
done

for scsi in /sys/class/scsi_disk/*; do
    scsi_id=$(basename "$scsi")
    echo "/dev/${scsi_id}"
done

3. Заключение

Хотя Linux не предоставляет аналог croinfo, используя команды для доступа к /sys/class/nvme/ и /sys/class/scsi_disk/, вы можете написать скрипты, которые предоставят аналогичную информацию. Данный подход требует дополнительной работы по формату вывода, однако это реалистичная и полезная альтернатива, учитывая гнучкость Linux и доступность данных о системе.

В будущем, возможно, стоит рассмотреть использование инструментов и библиотек, таких как udev, lsblk, и lshw, которые могут предоставить информацию о конфигурации системы в более удобной и парсируемой форме.

Оцените материал
Добавить комментарий

Капча загружается...