昨日、ipmitoolからのGUID取得方法について記述したので、今回はそのスクリプトの改良版。
ホスト名、IPアドレス自動取得スクリプトと同様に、外部ファイルからipmiのIPアドレス、ユーザ名、パスワードを取得させ、IPアドレス別に一覧化させるというもの。
リストの読込みは引数で行わせる。
1.外部ファイル
まずは外部ファイル「ipmi.list」から。名前は任意なので適当に。
今回は、Fujitsu Primergy RX100の初期設定(IPアドレスはDCHP)の状態でリストを作成している。
●ipmi.list
#ipaddr,user,pass
192.168.0.206,admin,admin
192.168.0.111,admin,password
2.Linux
LinuxでのUUID取得スクリプトは以下。
引数にはファイルの場所を渡してもらいたい。
#!/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,GUID"
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 }'`
GUID=`ipmitool -H $IPADDR -U $IPUSER -P $IPPASS mc guid | grep GUID | awk 'BEGIN {FS=": "} { print $2 }'`
GUID=`echo $GUID | sed -e 's/-//g' -e 's/"//g' | tr a-z A-Z`
GUID_6=`echo $GUID | cut -c1-8`
GUID_5=`echo $GUID | cut -c9-12`
GUID_4=`echo $GUID | cut -c13-16`
GUID_3=`echo $GUID | cut -c17-20`
GUID_2=`echo $GUID | cut -c21-24`
GUID_1=`echo $GUID | cut -c25-`
echo $IPADDR,$GUID_1$GUID_2$GUID_3$GUID_4$GUID_5$GUID_6
fi
done
2.Windows
WindowsでのUUID取得バッチは以下。
バッチファイルは、forの2重ループなどの場合は「setlocal ENABLEDELAYEDEXPANSION」を指定し変数の記述を変える必要がある。
@Echo off
setlocal ENABLEDELAYEDEXPANSION
Echo IPaddress,GUID
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 mc guid ^| find "GUID"`) DO @set GUID_ORG_1=%%x
Set GUID_ORG_2=!GUID_ORG_1: =!
Set GUID_ORG_3=!GUID_ORG_2:-=!
For %%z IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO Call Set GUID_ORG_3=%%GUID_ORG_3:%%z=%%z%%
Set UUID_6=!GUID_ORG_3:~0,8!
Set UUID_5=!GUID_ORG_3:~8,4!
Set UUID_4=!GUID_ORG_3:~12,4!
Set UUID_3=!GUID_ORG_3:~16,4!
Set UUID_2=!GUID_ORG_3:~20,4!
Set UUID_1=!GUID_ORG_3:~24,8!
Echo %%a,!UUID_1!!UUID_2!!UUID_3!!UUID_4!!UUID_5!!UUID_6!
)
以上、これでより楽にGUID(UUID)の一括取得が可能となった。