我想在数据库中保留已安装固件的列表,并且我可以在 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
我怎样才能从中解析出这个值?
有些外壳(内部外壳)根本没有固件值
答案1
我以前曾尝试过解析类似的输出hpacucli
,最终我不得不这样做:
运行 ACU 命令并将输出转储到文件。您编写的脚本将逐行解析文件。在阅读文件时,忽略每一行,直到我们看到以“Smart Array”开头的行。找到该行后,您将开始寻找空白行。当您看到空白行时,您就知道一个部分即将开始。将空白行后面的行存储为title
。继续逐行阅读,寻找显示“固件版本”的行。如果找到这样的行,请从中解析出数字(最简单的方法是在冒号处拆分行)并将其存储为version
。将title
和version
写入输出文件。当您找到另一个空白行时,删除title
和的旧值version
并重复该过程。
我目前找不到我的脚本,否则我会将其作为示例代码发布。据我回忆,我用 Ruby 编写了它,它不超过十几行。