さて、前の記事でも述べたが、今までの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!
)
最初からシリアルナンバーを採用しとけばよかったかなぁ…