ネットワーク上にあるhpサーバのiLO IPアドレスとライセンスを収集するスクリプト


2019/01/09 追記

オリジナルのNachoTech Blogがアクセスできなくなっていたので、「https://github.com/osakanataro/findilos」にオリジナルと後述の改変版をアップロードした。


hpサーバをリモートから制御するために使用するiLO。
稼働させたあとにIPアドレスを確認するのがめんどくさい。
そういう場合に、総当たりでiLOのIPアドレスを確認するスクリプトがあった。

NachoTech Blogの「How to find all the iLO’s on your network」にあるfindilosである。

早速ダウンロードして実行してみる。

[root@adserver ~]# ./findilos 172.17.17.0/24
Scanning...
--------------- ------ -------- ------------ -------------------------
iLO IP Address  iLO HW iLO FW   Server S/N   Server Model
--------------- ------ -------- ------------ -------------------------
172.17.17.xxx   N/A    1.26     CN71xxxMxx   ProLiant DL360 G7
1 iLOs found on network target 172.17.17.0/24
[root@adserver ~]#

iLO HWのモデル名は拾ってくれない。

blogのコメントを確認していくと、元のスクリプトはiLO-2までしか対応しておらず、その後のバージョンについてはコメント欄にある修正を実施すれば良いようだ。

また、iLO Advanceを買っている場合に、そのライセンスコードを表示するための案も提示されていた。

ただ、スクリプト例は汚い実装となっていて、せっかくの元スクリプトを活かしていない形だったので、元スクリプトの実装に従ってライセンスを表示するバージョンを作成した。

その実行例がこちら

[root@adserver ~]# ./findilos 172.17.17.0/24
Scanning...
--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------
iLO IP Address  iLO HW iLO FW   Server S/N   Server Model              iLO Edition          iLO Licence Key
--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------
172.17.17.xxx   iLO-3  1.26     CN71xxxMxx   ProLiant DL360 G7         iLO 3 Advanced       xxxxx-xxxxx-xxxxx-xxxxxx-xxxxx
1 iLOs found on network target 172.17.17.0/24
[root@adserver ~]#

スクリプトの修正例は以下

#!/bin/bash
#
# findilos - Search a local network segment for iLOs
#            The iLO is the Integrated Lights-Out management processor
#            used on HP ProLiant and BladeSystem servers
#
scriptversion="1.0"
#
# Author: iggy@nachotech.com
#
# Website: http://blog.nachotech.com
#
# Requires: tr sed expr curl nmap
#
# Tested with: Nmap 4.20, curl 7.17.1, RHEL4
#
# Note: Discovery of an iLO is dependent upon the Virtual Media port
#       being set to the default of 17988.  If this has been changed
#       by the iLO administrator, then this script will NOT find it.
#
#       Also, if the iLO XML Reply Data Return has been Disabled by
#       the iLO administrator, this script will not be able to
#       gather any information about the server.  It will still be
#       discovered, but all you will see is its IP address.
#
# GLOBAL VARIABLES
scriptname="findilos"
iloips="/tmp/tmpilos.$$"
iloxml="/tmp/tmpiloxml.$$"
ilohwvers="/tmp/tmpilohwvers.$$"
declare -i ilosfound=0
# FUNCTIONS
function parseiloxml {
  fgrep "$1" $iloxml > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    # tag not found in xml output, return empty string
    parsedstring="N/A"
  else
    # tag was found - now we parse it from the output
    tempstring=$( cat $iloxml | tr -d -c [:print:] | sed "s/^.*<$1&gt;//" | sed "s/<.$1.*//")
    # trim off leading and trailing whitespace
    parsedstring=`expr match "$tempstring" '[ \t]*\(.*[^ \t]\)[ \t]*$'`
  fi
}
function is_installed {
  which $1 &gt; /dev/null 2&gt;&amp;1
  if [ $? -ne 0 ]
  then
    printf "\nERROR: %s not installed.\n\n" $1
    exit 255
  fi
}
# MAIN
# check for tools that we depend upon
is_installed tr
is_installed sed
is_installed expr
is_installed curl
is_installed nmap
# check syntax - should have 1 and only 1 parameter on cmdline
if [ $# -ne 1 ]; then
  printf "%s %s ( http://blog.nachotech.com/ )\n" $scriptname $scriptversion
  printf "Usage: %s {target network specification}\n" $scriptname
  printf "TARGET NETWORK SPECIFICATION:\n"
  printf "  Can pass hostnames, IP addresses, networks, etc.\n"
  printf "  Ex: server1.company.com, company.com/24, 192.168.0.1/16, 10.0.0-255.1-254\n"
  printf "EXAMPLE:\n"
  printf "  %s 16.32.64.0/22\n" $scriptname
  exit 255
fi
iprange=$1
# prepare lookup file for iLO hardware versions
cat &gt; $ilohwvers << EOF
iLO-1 shows hw version ASIC:  2
iLO-2 shows hw version ASIC:  7
iLO-3 shows hw version ASIC: 8
iLO-3 shows hw version ASIC: 9
iLO-4 shows hw version ASIC: 12
iLO-4 shows hw version ASIC: 16
i-iLO shows hw version T0
EOF
#
# scan a range of IP addresses looking for an
# open tcp port 17988 (the iLO virtual media port)
#
printf "Scanning..."
nmap -n -P0 -sS -p 17988 -oG - $iprange | fgrep /open/ | awk '{print $2}' &gt; $iloips
printf "\n\n"
#
# open and read the list of IP addresses one at a time
#
exec 3< $iloips
echo "--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------"
echo "iLO IP Address  iLO HW iLO FW   Server S/N   Server Model              iLO Edition          iLO Licence Key"
echo "--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------"
while read iloip <&amp;3 ; do
  ilosfound=$ilosfound+1
  #
  # attempt to read the xmldata from iLO, no password required
  #
  curl --proxy "" --fail --silent --max-time 3 http://$iloip/xmldata?item=All &gt; $iloxml
  #
  # parse out the Server model (server product name)
  # from the XML output
  #
  parseiloxml SPN;  servermodel=$parsedstring
  parseiloxml SBSN; sernum=$parsedstring
  parseiloxml PN;   ilotype=$parsedstring
  parseiloxml FWRI; ilofirmware=$parsedstring
  parseiloxml HWRI; ilohardware=$parsedstring
  ilohwver=$(grep "$ilohardware" $ilohwvers|awk '{print $1}')
  if [ "$ilohwver" == "" ]; then
    ilohwver="N/A"
  fi
  if [ "$sernum" == "" ]; then
    sernum="N/A"
  fi
  # add start
  curl --proxy "" --fail --silent --max-time 3 http://$iloip/xmldata?item=CpqKey &gt; $iloxml
  parseiloxml LNAME; ilomodel=$parsedstring
  parseiloxml KEY; ilokey=$parsedstring
  # add end
  printf "%-15s %-6s %-8s %-12s %-25s %-20s %-30s\n" $iloip "$ilohwver" "$ilofirmware" "$sernum" "$servermodel" "$ilomodel" "$ilokey"
done
printf "\n%d iLOs found on network target %s.\n\n" $ilosfound $iprange
rm -f $iloips $iloxml $ilohwvers
exit 0

hp ProLiant Gen8サーバのiLOをESXiからアップデートする


VMware ESXiサーバとして動作しているhp ProLiant DL380p Gen8サーバのiLOをアップデートした。

まず、ESXi上から、iLOのバージョンと、iLOに割り当てられているIPアドレスを確認するため「hponcfg」コマンドを実行

/tmp # /opt/hp/tools/hponcfg -g
HP Lights-Out Online Configuration utility

Version 4.4-0 (c) Hewlett-Packard Company, 2014
Firmware Revision = 1.40 Device type = iLO 4 Driver name = hpilo
iLO IP Address: 172.17.15.99
Host Information:
                        Server Name: esxi1.osakana.local
                        Server Serial Number: SGH421XXXX
/tmp #

iLOのアップデータファイル CP025110.scexe を、/tmpに配置し、実行権限を与え、実行。

/tmp # chmod a+x CP025110.scexe
/tmp # ./CP025110.scexe
OS Version found  [5.5.0]
sh: 6.0=./ESXi_5.5: unknown operand
./CP025110.scexe: Okay process the path [./ESXi_5.5 6.0]
sh: 6.0: unknown operand
./CP025110.scexe:  Update flash engine from ./ESXi_5.5 6.0
sh: 6.0/clean_target_location.sh: unknown operand
sh: 6.0/copy_FE_to_target_location.sh: unknown operand
Copy Flash Engine files from [./ESXi_5.5 6.0] to [/tmp/sctmpdir4924713]
cp: './ESXi_5.5' and './ESXi_5.5' are the same file
cp: can't stat '6.0/*': No such file or directory

iLO Flasher v1.0.2-2 for VMware ESXi (Jan  7 2014)
(C) Copyright 2002-2014 Hewlett-Packard Development Company, L.P.
Firmware image: ./ilo4_203.bin
Current iLO 4 firmware version  1.40; Serial number ILOSGH421XXXX

Component XML file: ./CP025110.xml
./CP025110.xml reports firmware version 2.03
This operation will update the firmware on the
iLO 4 in this server with version 2.03.
Continue (y/N)?y
Current firmware is  1.40 (Jan 14 2014 00:00:00)
Firmware image is 0x1001b1c(16784156) bytes
Committing to flash part...
******** DO NOT INTERRUPT! ********
Flashing is underway... 100 percent programmed. \
Succeeded.
***** iLO 4 reboot in progress (may take up to 60 seconds.)
***** Please ignore console messages, if any.
iLO 4 still rebooting. Try again...
iLO 4 reboot completed.
/tmp #

firmwareのバージョンが上がっていることを確認。

/tmp #  /opt/hp/tools/hponcfg -g
HP Lights-Out Online Configuration utility

Version 4.4-0 (c) Hewlett-Packard Company, 2014
Firmware Revision = 2.03 Device type = iLO 4 Driver name = hpilo
iLO IP Address: 0.0.0.0
Host Information:
                        Server Name: esxi1.osakana.local
                        Server Serial Number: SGH421XXXX
/tmp #

・・・と、実行が早すぎたようで、DHCPで割り当てているIPアドレスが「0.0.0.0」となっている。
時間をおいて再実施

/tmp #  /opt/hp/tools/hponcfg -g
HP Lights-Out Online Configuration utility

Version 4.4-0 (c) Hewlett-Packard Company, 2014
Firmware Revision = 2.03 Device type = iLO 4 Driver name = hpilo
iLO IP Address: 172.17.15.99
Host Information:
                        Server Name: esxi1.osakana.local
                        Server Serial Number: SGH421XXXX
/tmp #

これで、問題なしですね。

hpからProLiant Generation 9サーバが登場



アメリカでhpがProLiant Gen9サーバを発表した模様。

2014/08/28:HP Unveils New ProLiant Gen9 Servers to Help Customers Address Evolving Data Center Demands
Gen9_family_FT_PR

といっても、詳細は9月9日~11日にサンフランシスコで開催されるIntel Developers Forumにて発表される、とのこと。

このIntel Developers Forumでは、DDR4メモリ対応のサーバ向け新CPU Haswell-EP搭載 Xeon E5-2600v3プロセッサが発表される見込みなので、それに合わせて詳細発表、となるんでしょうね。

上記URLで公開されている情報、「Reimagine the server. Think compute.」の下部にあるリンクから「HP ProLiant Gen9 Servers FAQ」、The Register:「HP busts out new ProLiant Gen9 servers」の記事の内容を合わせて

発表される機種

従来モデルのアップデート
・タワー型 ML350 Gen9(5Uラックも可)
High-performance server with unmatched capacity and reliability in a rack or tower
form factor

・1U DL360 Gen9
Dense performance for multi-workload compute in the data center

・2U DL380 Gen9
The no-compromise data center standard for multi-workload compute, and the most
popular server model in the world’s best-selling ProLiant server family

・ブレード用 WL460c Gen9
The world’s leading server blade accelerates service delivery with advanced Compute
performance that’s truly optimized for core IT workloads.

・Apollo6000用 XL230a
Apollo 6000 System server, density optimized performance for rack-scale workloads

・Apollo8000用 XL730f
Apollo 8000 System server for high performance computing workloads

名前変更での登場
・DL160 Gen9 (旧DL360e)
Right-sized performance for space- and budget-constrained environments
・DL180 Gen9 (旧DL380e)
The new standard for growing data center needs

特徴
・Haswell-EP Xeon E5-2600v3
・DDR4メモリ
・UEFIへの移行
・RESTful APIによるUEFI設定変更対応
・12Gb/s Smart Array Controller
・Windows Server 2003非対応

DL360G9のフロント写真を見ると、USBポートが青い・・・USB3.0対応の可能性が・・・
DL360_Gen9_10SFF_FT

DL180G9/DL160G9の方は、黒なので、300シリーズのみなのかも?

hp ProLiantをLinuxで使う場合にインストールするService Pack for ProLiantについて


hp ProLiantをLinuxで使う場合、Service Pack for ProLiantという追加ドライバ&管理ソフトウェア集をインストールする・・・ということになっている。

製品ページ:Service Pack for ProLiant(SPP) / Smart Update Manager(SUM) v6.x
Service Pack for ProLiant(SPP) / Smart Update Manager(SUM) v8

基本的にはisoイメージで配布されており、ディストリビューション特化型の縮小版がtar.gzでも配布されている。
それぞれ、中に「hpsum」というパッケージインストール用フロントエンドプログラム(Smart Update Manager/SUM)が入っているので、それを実行して、インストールを行うことになる。

詳細についてはSUM: Smart Update Manager hpsum v6.2対応環境とインストール方法についてSUM: Smart Update Manager hpsum v6.3.1対応環境とインストール方法について」を参照のこと。

で・・・hp USAのページを見ていたらhp Software Delivery RepositoryHPE Software Delivery Repository」なんてものを発見。

RHEL/CentOSであれば、yumコマンドでhpの管理系ソフトウェアがインストールできるようになるらしい。
対応している管理ソフトウェアは、以下のものらしい。

 

Browse repository Project & subscription information Contents
spp Service Pack for ProLiant Drivers, agent software, firmware for RedHat and SLES
mcp Management Component Pack for ProLiant Agent software for Ubuntu, Oracle and community distros
isp Integrity Support Pack Agent software for RedHat and SLES on IA64
iwbem Integrity WBEM Providers WBEM providers for RedHat and SLES on IA64
mlnx_ofed Mellanox OFED VPI Drivers and Utilities Mellanox OFED VPI for RedHat and SLES
vibsdepot VMware® ESXi bundles Drivers and vibs for VMWare®
hpsum HP Smart Update Manager Software to update firmware and drivers on RedHat and SLES
stk HP ProLiant Scripting Toolkit Useful commands for scripting/automating ProLiant hardware

 

このレポジトリを使って、Service Pack for ProLiantをインストールする手順はSubscribe your system to the spp repositorySubscribe your system to the spp repository」か、もしくはLinux best practices using HP Service Pack for ProLiant (SPP) and Software Delivery Repository (SDR)Linux best practices using HP Service Pack for ProLiant (SPP) and Software Delivery Repository (SDR)」 で紹介されている。