#!/bin/sh # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html ##################################################### # # Generic xCAT post script for diskless nodes # ##################################################### if [ ! `uname` == Linux ]; then MYDIR=`dirname $0` exec $MYDIR/xcatdsklspost.aix exit fi let SLI=$RANDOM%10 sleep $SLI #setup $OSVER ,for SLES11 if [ -e '/etc/SuSE-release' ]; then OSVER=`grep -h VERSION /etc/SuSE-release |awk '{print $3}'` fi SIP=`grep -h dhcp-server-identifier /var/lib/dhclient/dhclient-*.leases|tail -n 1|awk '{print $3}'|sed -e 's/;//'` if [ -z "$SIP" ]; then SIP=`grep -h DHCPSID /var/lib/dhcpcd/*.info|awk -F= '{print $2}'|tail -n 1` fi #echo "SIP=$SIP" if [ "$OSVER" = "11" ]; then SIP=`echo $SIP |awk -F\' '{print $2}'` #trim ' fi if grep 'rw /rw tmpfs ' /proc/mounts >& /dev/null; then touch /var/lock/subsys/xcatmounts echo '#!/bin/bash' > /etc/rc6.d/K10xcatmounts echo umount -l /ro >> /etc/rc6.d/K10xcatmounts echo umount -l /rw >> /etc/rc6.d/K10xcatmounts chmod 755 /etc/rc6.d/K10xcatmounts ln -sf /etc/rc6.d/K10xcatmounts /etc/rc0.d/K10xcatmounts fi if [ -x /usr/bin/openssl ]; then XCATSERVER="$SIP:3001" export XCATSERVER fi mkdir -p /xcatpost; mkdir -p /tmp/postage rm -R -f /xcatpost/* rm -R -f /tmp/postage/* cd /tmp/postage #wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 0 -T 60 ftp://$SIP/install/postscripts 2> /tmp/wget.log wget -l inf -N -r --waitretry=10 --random-wait --retry-connrefused -t 0 -T 60 ftp://$SIP/postscripts 2> /tmp/wget.log #mv $SIP/install/postscripts/* /xcatpost; mv $SIP/postscripts/* /xcatpost; rm -rf $SIP cd /xcatpost; PATH=/xcatpost:$PATH export PATH chmod +x /xcatpost/*; echo "PATH=$PATH" /xcatpost/getpostscript.awk | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /tmp/mypostscript; MYCONT=`grep MASTER /tmp/mypostscript` #echo "MYCONT=$MYCONT" while [ -z "$MYCONT" ]; do let SLI=$RANDOM%10 let SLI=10+$SLI sleep $SLI /xcatpost/getpostscript.awk | sed -e 's/<[^>]*>//g'|egrep -v '^ *$'|sed -e 's/^ *//' > /tmp/mypostscript; MYCONT=`grep MASTER /tmp/mypostscript` # echo "MYCONT=$MYCONT" done # when called by the updatenode command, #modify the UPDATENODE flag to 1 if [ $# -gt 0 ]; then TMP=`sed -e 's/UPDATENODE=0/UPDATENODE=1/g' /tmp/mypostscript`; echo "$TMP" > /tmp/mypostscript; fi if [ $# -gt 1 ]; then POSTS=$2 #remove all the postscripts TMP=`sed "/postscripts-start-here/,/postscripts-end-here/ d" /tmp/mypostscript` echo "$TMP" > /tmp/mypostscript #add requested postscripts in echo "$POSTS" | tr "," "\n" >> /tmp/mypostscript fi #MYCONT=`cat /tmp/mypostscript` #echo "$MYCONT" # when called by the updatenode command, # if the first parameter equals 1, remove the otherpkgs postscript, # since the otherpkgs only run for software maintenance: xcatdsklspost 2 otherpkgs if [ $# -gt 0 ]; then if [ $1 -eq 1 ]; then TMP=`sed "/otherpkgs/ d" /tmp/mypostscript` echo "$TMP" > /tmp/mypostscript fi fi if [ $# -eq 0 ]; then #notify the server that we are done with netbooting CNS=`grep NODESTATUS= /tmp/mypostscript |awk -F = '{print $2}'` if [ -z "$CNS" ] || [ "$CNS" != "'0'" -a "$CNS" != "'N'" -a "$CNS" != "'n'" ]; then echo "updateflag.awk \$MASTER 3002 \"installstatus booted\"" >> /tmp/mypostscript fi fi DHCP_TMP=`sed 's/\(DHCPINTERFACES=\)\(.*\)$/\1"\2"/' /tmp/mypostscript` echo "$DHCP_TMP" > /tmp/mypostscript chmod +x /tmp/mypostscript if [ -x /tmp/mypostscript ];then /tmp/mypostscript fi rm -f /tmp/mypostscript #tell user it is done when this is called by updatenode command if [ $# -gt 0 ]; then echo "returned" fi