Example Configure.sh Script

The following is an example of a configure.sh script.

#!/bin/sh
# Copyright (c) 2008 - 2016 TIBCO Software, Inc. All Rights Reserved. 

# usage function
usage() {
	echo "Usage: $0 -s server [-l {y|n}] [-P profiles_dir] [-t target_platform]"
	echo
	echo "  -s  name of the server, in [host]:[port] form"
	echo "  -l  If y, then use SSL"
	echo "  -P  name of the profiles directory, where configurartion information and daemon logs are stored. Default: ./profiles"


}

# register interrupted
interrupt() {
	echo "Interrupted."
}

# trap to insure cleanup even if terminated
trap 'interrupt; exit' 2

# first order of business: explode the archives
failure() {
	echo "$0: Error: The last operation failed"
	echo "Aborting"
	exit 1
}

if [ "z$DS_TARGET_PLATFORM" = "z" ]
then
  DS_TARGET_PLATFORM=`uname -m`
fi

SYSTYPE=`uname -s`
CPUNAME=$DS_TARGET_PLATFORM

if [ "$SYSTYPE" = "Linux" ]; then
        KERNELVER=`uname -r | head -c 5`
	SYSTEM=linux
	if [ "$CPUNAME" = "s390" ]; then
	    ARCH=s390
	elif [ "$CPUNAME" = "ppc64" ]; then
	    ARCH=ppc64
	elif [ "$CPUNAME" = "x86_64" ]; then
            if [ "$KERNELVER" = "2.6.5" ]; then
               LIBVER=amd64_SLES9
            fi
	    ARCH=amd64
	else
	    ARCH=i386
	fi
	UNZIP_TOOL=gunzip
	HNAME=`hostname`
elif [ "$SYSTYPE" = "SunOS" ]; then
	SYSTEM=solaris
	if [ "$CPUNAME" = "i86pc" ]; then
        if [ "z$SOLX86_32" != "z" ]; then
	       ARCH=i386
        else
	       ARCH=amd64
        fi
	else
	    ARCH=sparc
	fi
	UNZIP_TOOL=gunzip
	HNAME=`hostname | sed 's/\..*$//'`
elif [ "$SYSTYPE" = "HP-UX" ]; then
	SYSTEM=hpux
	if [ "$CPUNAME" = "ia64" ]; then
	    ARCH=hpux64
	else
	    ARCH=hpux32
	fi
	UNZIP_TOOL=gunzip
	HNAME=`hostname  | sed 's/\..*$//'`
elif [ "$SYSTYPE" = "AIX" ]; then
	SYSTEM=aix
	ARCH=ppc
	UNZIP_TOOL=gunzip
	HNAME=`hostname  | sed 's/\..*$//'`
	ulimit -d unlimited
else
    echo "SYSTYPE=$SYSTYPE"
    echo "CPUNAME=$CPUNAME"
	echo "This system is not supported."
	exit 1
fi


# shell function for pulling properties file values
DATFILE=intranet.dat
parseProperty() {
	propname=$1
	if [ -z "$2" ]; then 
		propfile=$DATFILE
	else
		propfile=$2
	fi
	currprop=`sed -n -e "s/^$propname=\([^; ]*\).*\$/\1/p" $propfile`
}



# do not pull in existing environment variables
unset SERVER; unset PROFILESDIR; unset PROTOCOL

while getopts s:j:P:l: opt
do
	case $opt in 
		s) SERVER=$OPTARG
		;;
		P) PROFILESDIR=$OPTARG		
		;;
		l) 
		  if [ $OPTARG = "y" ]; then
			PROTOCOL="https";
		  else 
			PROTOCOL="http";
		  fi;
		;;		
		\?) usage; exit
		;;
	esac
done

if [ -z "$SERVER" ]; then 
	usage
	exit
fi

if [ -z "$PROTOCOL" ]; then 
	PROTOCOL="http";
fi


if [ -n "$LIBVER" ]; then
   CURR=lib.$SYSTEM-$LIBVER
else
   CURR=lib.$SYSTEM-$ARCH
fi
if [ ! -d lib ]; then
	if [ ! -d $CURR ]; then
		if [ ! -f $CURR.tar ]; then
			if [ ! -f $CURR.tar.gz ]; then
				echo "Fatal error: cannot find the archive $CURR.tar.gz"
				exit 1
			fi
			echo "Unzipping $CURR.tar.gz"
			${UNZIP_TOOL} $CURR.tar.gz
			if [ $? -ne 0 ]; then failure; fi
		fi
		echo "Unpacking $CURR.tar"
		tar -xf $CURR.tar
		if [ $? -ne 0 ] ; then failure; fi
	fi
	echo "Renaming $CURR to lib"
	mv $CURR lib
fi


if [ -z "$PROFILESDIR" ]; then PROFILESDIR=profiles; fi

if [ -f "$DATFILE" -a ! -z "$SERVER" ]; then
	parseProperty server
	OLDSERVER=$currprop

	if [ "$OLDSERVER" != "$SERVER" ]; then
		if [ -n "`find $PROFILESDIR/$HNAME -name "pid.*"`" ]; then
			echo
			echo "Error: you cannot specify a new server while"
			echo "Engines are running from this install image."
			echo "Please halt these Engines before continuing. Aborting..."
			echo
			exit 1;
		fi
	fi
fi


# review the config parameters and error check

while [ ! -d "$PROFILESDIR" -o ! -f "$TOUCHFILE" ]
do
	MKCMD="mkdir -p $PROFILESDIR"
	TOUCHFILE="$PROFILESDIR/.touchfile"
	TOUCHCMD="touch $TOUCHFILE"

	if [ ! -d "$PROFILESDIR" ] ; then
		if $MKCMD 2>/dev/null ; then printf "" ; else
			echo "Error: cannot create specified profiles dir $PROFILESDIR"
			printf "Please specify a new directory: "
			read PROFILESDIR
		fi
	elif [ ! -f "$TOUCHFILE" ]; then
		if $TOUCHCMD 2>/dev/null ; then printf "" ; else
			echo "Error: cannot write to specified profiles dir $PROFILESDIR"
			printf "please specify a new directory: "
			read PROFILESDIR
		fi
	fi
done

rm -f $TOUCHFILE



CURR=jre.$SYSTEM-$ARCH
if [ ! -d jre ]; then
	if [ ! -d $CURR ]; then
		if [ ! -f $CURR.tar ]; then
			if [ ! -f $CURR.tar.gz ]; then
				if [ "a$SYSTYPE" = "aAIX" ]; then
					LIBPATH="./lib:$LIBPATH"
					export LIBPATH
				else
					LD_LIBRARY_PATH="./lib:$LD_LIBRARY_PATH"
					export LD_LIBRARY_PATH				
				fi
				hname=$HNAME
				export hname
				echo "Downloading $CURR.tar.gz from server"
				./bin/installer doUrlToFile "$PROTOCOL://$SERVER/livecluster/public_html/register/install/jre/$CURR.tar.gz" $CURR.tar.gz
				if [ $? -ne 0 ]; then 
					echo "Error: unable to download $CURR.tar.gz from server"
					exit 1
				fi				
			fi
			echo "Unzipping $CURR.tar.gz"
			${UNZIP_TOOL} $CURR.tar.gz
			if [ $? -ne 0 ]; then failure; fi
		fi
		echo "Unpacking $CURR.tar"
		tar -xf $CURR.tar
		if [ $? -ne 0 ] ; then failure; fi
	fi
	echo "Renaming $CURR to jre"
	mv $CURR jre
fi


echo
echo "Configuration parameters:"
echo "-------------------------"
printf "Controlling server:\t$SERVER\n"
printf "Controlling protocol:\t$PROTOCOL\n"
printf "Profiles directory:\t$PROFILESDIR\n"

echo


if [ -f "$DATFILE" ]; then
	parseProperty server
	OLDSERVER=$currprop

	if [ "$OLDSERVER" != "$SERVER" ]; then
		rm -f $PROFILESDIR/$HNAME/x4088*
	fi
	parseProperty protocol
	OLDPROTOCOL=$currprop
	if [ "$OLDSERVER" != "$PROTOCOL" ]; then
		rm -f $PROFILESDIR/$HNAME/x4088*
	fi
fi

echo "server=$SERVER" > $DATFILE
echo "protocol=$PROTOCOL" >> $DATFILE
echo "profilesdir=$PROFILESDIR" >> $DATFILE
echo "Done."