-Refresh bmcsetup
-Have bmcsetup theoretically support dhcp ipmi devices -add getipmi with cert support when available git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@10421 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
parent
f1b4b9d132
commit
217798eebb
@ -17,31 +17,36 @@ CREDPID=$!
|
||||
sleep 2
|
||||
modprobe ipmi_si
|
||||
modprobe ipmi_devintf
|
||||
while [ -z "$BMCIP" ]; do
|
||||
IPCFGMETHOD=static
|
||||
while [ -z "$BMCIP" -a $IPCFGMETHOD="static" ]; do
|
||||
while ! getipmi
|
||||
do
|
||||
echo "Retrying retrieval of IPMI settings from server"
|
||||
done
|
||||
TIMEOUT=15
|
||||
BMCIP=`grep bmcip /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCGW=`grep gateway /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCNM=`grep netmask /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCUS=`grep username /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCPW=`grep password /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
if [ -z "$BMCIP" ]; then
|
||||
BMCIP=`grep bmcip /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCGW=`grep gateway /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCNM=`grep netmask /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCUS=`grep username /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCPW=`grep password /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
IPCFGMETHOD=`grep ipcfgmethod /tmp/ipmicfg.xml|awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
if [ -z "$IPCFGMETHOD" ]; then
|
||||
IPCFGMETHOD="static"
|
||||
fi
|
||||
if [ -z "$BMCIP" -a $IPCFGMETHOD="static" ]; then
|
||||
echo "FAILED TO RETRIEVE SETTINGS, RETRYING in 15 seconds"
|
||||
sleep 15
|
||||
fi
|
||||
done
|
||||
kill $CREDPID
|
||||
NUMBMCS=`grep bmcip /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'|wc -l`
|
||||
NUMBMCS=`grep bmcip /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'|wc -l`
|
||||
IPMIVER=`ipmitool mc info|grep ^IPMI|awk '{print $4}'`
|
||||
IPMIMFG=`ipmitool mc info|grep "^Manufacturer ID"|awk '{print $4}'`
|
||||
if [ "$IPMIMFG" == 2 ]; then #IBM
|
||||
XPROD=`ipmitool mc info|grep "^Product ID"|awk '{print $4}'`
|
||||
if [ "$XPROD" == "220" ]; then
|
||||
LOCKEDUSERS=1
|
||||
BMCPORT=`grep bmcport /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
if [ ! -z "$BMCPORT" ]; then
|
||||
let idev=NUMBMCS-1
|
||||
for p in $BMCPORT; do
|
||||
@ -53,7 +58,7 @@ if [ "$IPMIMFG" == 2 ]; then #IBM
|
||||
else
|
||||
IBMFAM=`ipmitool raw 0x3a 0x50 |head -n 1| awk '{print $1 $2 $3 $4}'`
|
||||
if [ "$IBMFAM" == "59554f4f" ]; then
|
||||
BMCPORT=`grep bmcport /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
if [ ! -z "$BMCPORT" ]; then
|
||||
let idev=NUMBMCS-1
|
||||
for p in $BMCPORT; do
|
||||
@ -67,7 +72,7 @@ elif [ "$IPMIMFG" == 20301 ] ; then
|
||||
XPROD=`ipmitool mc info|grep "^Product ID"|awk '{print $4}'`
|
||||
if [ "$XPROD" == "220" ]; then
|
||||
LOCKEDUSERS=1
|
||||
BMCPORT=`grep bmcport /tmp/ipmi.data |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
BMCPORT=`grep bmcport /tmp/ipmicfg.xml |awk -F\> '{print $2}'|awk -F\< '{print $1}'`
|
||||
if [ ! -z "$BMCPORT" ]; then
|
||||
let idev=NUMBMCS-1
|
||||
for p in $BMCPORT; do
|
||||
@ -88,49 +93,63 @@ done
|
||||
echo "Detected LAN channel $LANCHAN"
|
||||
|
||||
let idev=NUMBMCS
|
||||
while [ $idev -gt 0 ]; do
|
||||
let idev=idev-1
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN ipsrc static; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
if [ $IPCFGMETHOD="static" ]; then
|
||||
while [ $idev -gt 0 ]; do
|
||||
let idev=idev-1
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN ipsrc static; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
done
|
||||
done
|
||||
done
|
||||
let idev=NUMBMCS-1
|
||||
for b in $BMCIP; do
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN ipaddr $b; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
let idev=NUMBMCS-1
|
||||
for b in $BMCIP; do
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN ipaddr $b; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
done
|
||||
let idev=idev-1
|
||||
done
|
||||
let idev=idev-1
|
||||
done
|
||||
let idev=NUMBMCS-1
|
||||
for m in $BMCNM; do
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN netmask $m; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
let idev=NUMBMCS-1
|
||||
for m in $BMCNM; do
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN netmask $m; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
done
|
||||
let idev=idev-1
|
||||
done
|
||||
let idev=idev-1
|
||||
done
|
||||
TRIES=0
|
||||
if [ ! -z "$BMCGW" ]; then
|
||||
let idev=NUMBMCS-1
|
||||
for g in $BMCGW; do
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN defgw ipaddr $g; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
TRIES=0
|
||||
if [ ! -z "$BMCGW" ]; then
|
||||
let idev=NUMBMCS-1
|
||||
for g in $BMCGW; do
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN defgw ipaddr $g; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
done
|
||||
let idev=idev-1
|
||||
done
|
||||
let idev=idev-1
|
||||
done
|
||||
TRIES=0
|
||||
TRIES=0
|
||||
fi
|
||||
else
|
||||
let idev=NUMBMCS-1
|
||||
while [ $idev -gt 0 ]; do
|
||||
let idev=idev-1
|
||||
TRIES=0
|
||||
while ! ipmitool -d $idev lan set $LANCHAN ipsrc $IPCFGMETHOD; do
|
||||
sleep 1
|
||||
let TRIES=TRIES+1
|
||||
if [ $TRIES -gt $TIMEOUT ]; then break; fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
let idev=NUMBMCS-1
|
||||
for bmcu in $BMCUS; do
|
||||
DISABLEUSERS="1 2 3 4"
|
||||
|
38
xCAT-nbroot2/getipmi
Executable file
38
xCAT-nbroot2/getipmi
Executable file
@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
allowcred.awk &
|
||||
CREDPID=$!
|
||||
if [ -z "$XCATDEST" ]; then
|
||||
XCATDEST=$1
|
||||
fi
|
||||
for LANCHAN in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
|
||||
if ipmitool channel info $LANCHAN 2> /dev/null | grep 802.3 > /dev/null 2>&1 && ipmitool raw 0xc 2 $LANCHAN 5 0 0 > /dev/null 2>&1;
|
||||
then break;
|
||||
fi;
|
||||
done
|
||||
BMCMAC=`ipmitool lan print $LANCHAN|grep ^MAC|awk '{print $4}'` #bmcconfig may opt to use DHCP, if so we need to feed up the mac address
|
||||
#TODO: need a way to get the DUID the service processor may use, perhaps reserve that for 'ibmsetup' since spec doesn't touch ipv6?
|
||||
|
||||
echo "<xcatrequest>
|
||||
<command>getbmcconfig</command>
|
||||
<callback_port>300</callback_port>
|
||||
<bmcmac>$BMCMAC</bmcmac>
|
||||
</xcatrequest>" > /tmp/bmcreq.xml
|
||||
rm /tmp/ipmicfg.xml
|
||||
while [ ! -f /tmp/ipmicfg.xml ] || grep error /tmp/ipmicfg.xml; do
|
||||
if [ -f /tmp/ipmicfg.xml ]; then
|
||||
echo -n "Retrying in 60 seconds...";
|
||||
timer=60
|
||||
while [ $timer -gt 0 ]; do
|
||||
sleep 1
|
||||
echo -n .
|
||||
timer=$(($timer-1));
|
||||
done
|
||||
fi
|
||||
if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available
|
||||
cat /tmp/bmcreq.xml | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATDEST -quiet 2> /dev/null > /tmp/ipmicfg.xml
|
||||
else
|
||||
cat /tmp/bmcreq.xml | openssl s_client -connect $XCATDEST -quiet 2> /dev/null > /tmp/ipmicfg.xml
|
||||
fi
|
||||
done
|
||||
rm /tmp/bmcreq.xml
|
||||
kill $CREDPID
|
@ -588,6 +588,7 @@ inst "$moddir/udpcat.awk" "/bin/udpcat.awk"
|
||||
inst "$moddir/minixcatd.awk" "/bin/minixcatd.awk"
|
||||
inst "$moddir/bmcsetup" "/bin/bmcsetup"
|
||||
inst "$moddir/allowcred.awk" "/bin/allowcred.awk"
|
||||
inst "$moddir/getipmi" "/bin/getipmi"
|
||||
inst "$moddir/getcert" "/bin/getcert"
|
||||
inst "$moddir/dhclient.conf" "/etc/dhclient.conf"
|
||||
inst "$moddir/dhclient-script" "/sbin/dhclient-script"
|
||||
|
Loading…
Reference in New Issue
Block a user