Я хотел бы сохранить список установленных микропрограмм в базе данных, и я могу получить нужные мне данные в выводе hpacucli, но я не могу найти надежный способ проанализировать этот файл;
# hpacucli ctrl slot=2 enclosure 4I:1 show
Smart Array P800 in Slot 2
DL320s at Port 4I, Box 1, OK
Fan Status: OK
Temperature Status: OK
Power Supply Status: Redundant
Vendor ID: HP
Serial Number:
**Firmware Version: 1.20**
Drive Bays: 12
Port: 4I
Box: 1
Location: Internal
Expander 249
Device Number: 249
Firmware Version: 1.20
WWID: 500508B300DCED50
Port: 4I
Box: 1
Vendor ID: HP
Expander 250
Device Number: 250
Firmware Version: 1.02
WWID: 50014380036D183F
Vendor ID: HP
Enclosure SEP (Vendor ID HP, Model DL320s) 247
Device Number: 247
Firmware Version: 1.20
WWID: 500508B300DCED63
Port: 4I
Box: 1
Vendor ID: HP
Model: DL320s
SEP (Vendor ID HP, Model P800) 248
Device Number: 248
Firmware Version: 1.02
WWID: 50014380036D183E
Vendor ID: HP
Model: P800
как мне извлечь оттуда это значение?
Некоторые корпуса, внутренние, вообще не имеют прошивки
Я попытался разобрать вывод hpacucli
подобное в прошлом, и вот что мне пришлось сделать:
Запустите команду ACU и сохраните вывод в файл. Написанный вами скрипт будет анализировать файл по одной строке за раз. При чтении файла игнорируйте каждую строку, пока не увидите строку, начинающуюся с «Smart Array». Найдя эту строку, вы начнете искать пустые строки. Когда вы видите пустую строку, вы знаете, что раздел вот-вот начнется. Сохраните строку, следующую за пустой строкой, как title
. Продолжайте читать по строкам, ищите строку с надписью «Версия прошивки». Если вы найдете такую строку, проанализируйте ее число (проще всего разделить строку по двоеточию) и сохраните ее как version
. Напишите title
и version
в выходной файл. Когда вы найдете еще одну пустую строку, удалите старые значения title
и version
и повторите процесс.
Я не могу найти свой сценарий в данный момент, иначе я бы опубликовал его как образец кода. Насколько я помню, я сделал это на Ruby, и это было не больше дюжины или около того строк.