#!/bin/bash log_label="xcat.genesis.getipmi" allowcred.awk & CREDPID=$! if [ -z "$XCATDEST" ]; then XCATDEST=$1 fi # This section only works in genesis if [ -z "$XCATDEST" ]; then for parm in $(cat /proc/cmdline); do if echo "$parm" |grep -q xcatd=; then XCATDEST="$(echo "$parm" |awk -F= '{print $2}')" fi done fi # This section works in diskless/diskful # The environment MASTER_IP and XCATDPORT is exported by mypostscript if [ -z "$XCATDEST" ]; then XCATDEST=$MASTER_IP:$XCATDPORT 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? IPMIMFG="$(ipmitool mc info |grep "^Manufacturer ID"|awk '{print $4}')" XPROD="$(ipmitool mc info | grep "^Product ID"|awk '{print $4}')" if [ "$IPMIMFG" == "42817" -a "$XPROD" == "16975" ]; then ISOPENBMC=1 # AC922 elif [ "$IPMIMFG" == "42817" -a "$XPROD" == "1" ]; then ISOPENBMC=1 # IC922 else ISOPENBMC=0 fi echo " getbmcconfig 300 $ISOPENBMC $BMCMAC " > /tmp/bmcreq.xml rm -f /tmp/ipmicfg.xml while [ ! -f /tmp/ipmicfg.xml ] || grep error /tmp/ipmicfg.xml; do if [ -f /tmp/ipmicfg.xml ]; then timer=60 while [ $timer -gt 0 ]; do sleep 1 echo -en "Retrying in $timer seconds \r" timer=$(($timer-1)); done fi echo -en " \r"; if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect "$XCATDEST" -quiet 2> /dev/null < /tmp/bmcreq.xml > /tmp/ipmicfg.xml else openssl s_client -connect "$XCATDEST" -quiet 2> /dev/null < /tmp/bmcreq.xml > /tmp/ipmicfg.xml fi done rm /tmp/bmcreq.xml kill $CREDPID