如何查询 HP 智能阵列背板/外壳的固件版本(使用脚本)?

如何查询 HP 智能阵列背板/外壳的固件版本(使用脚本)?

我想在数据库中保留已安装固件的列表,并且我可以在 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。将titleversion写入输出文件。当您找到另一个空白行时,删除title和的旧值version并重复该过程。

我目前找不到我的脚本,否则我会将其作为示例代码发布。据我回忆,我用 Ruby 编写了它,它不超过十几行。

相关内容