さて、前の記事でも述べたが、今までのUUID方式だと汎用性が弱いので今後はシリアルナンバーでの固定IPアドレス設定手法を採用することにした。
そこで、以前書いたipmitoolを用いたUUID一括取得スクリプトを改良してシリアルナンバーを取得するようにした。

1.外部ファイル

まずは外部ファイル「ipmi.list」から。
…まぁ、前のスクリプトから何も変わって無いんだけどね。

●ipmi.list

#ipaddr,user,pass
192.168.0.206,admin,admin
192.168.0.111,admin,password

2.Linux

Linuxでのシリアルナンバー取得スクリプトは以下。
前のスクリプトと同じく、引数にはファイルの場所を渡してもらいたい。

#!/bin/sh
IPMI_LIST=$1
LIST=$(cd $(dirname "$IPMI_LIST") && pwd)/$(basename "$IPMI_LIST")

cat $LIST |
while read LINE ; do
    if [[ $LINE =~ (^#|^ *$) ]] ;then
      echo "IPAddress,SerialNo"
    else
      IPADDR=`echo $LINE | awk 'BEGIN {FS=","} { print $1 }'`
      IPUSER=`echo $LINE | awk 'BEGIN {FS=","} { print $2 }'`
      IPPASS=`echo $LINE | awk 'BEGIN {FS=","} { print $3 }'`

      SERIALNO=`ipmitool -H $IPADDR -U $IPUSER -P $IPPASS fru | grep "Product Serial" | awk 'BEGIN {FS=": "} { print $2 }'`
      echo $IPADDR,$SERIALNO
    fi
done

3.Windows

Windowsでのシリアルナンバー取得バッチは以下。

@Echo off
setlocal ENABLEDELAYEDEXPANSION
Echo IPaddress,SerialNo
Set IPMI_LIST=%~f1
For /f "skip=1 tokens=1,2,3* delims=," %%a In (%IPMI_LIST%) Do (
  For /F "tokens=2 usebackq delims=^:^" %%x in (`ipmitool -H %%a -U %%b -P %%c fru ^| find "Product Serial"`) DO @set SERIALNO=%%x
    Echo %%a,!SERIALNO!
)

最初からシリアルナンバーを採用しとけばよかったかなぁ…