#!/bin/sh
#!/bin/shell-v1%-#########################################################
#
#    install_native.sh
#
#-%emc-cr-shell%-############################################################
#-%emc-cr-shell-v1%-#########################################################
#
# Copyright (c) 2008, EMC Corporation. All rights reserved.
#
#
# This software is furnished under a license and may be used and copied
# only in accordance with the terms of such license and with the
# inclusion of the above copyright notice. This software or any other
# copies thereof may not be provided or otherwise made available to any
# other person. No title to and ownership of the  software is hereby
# transferred.
#
# The information in this software is subject to change without notice
# and should not be construed as a commitment by EMC Corporation.
#
# EMC Corporation assumes no responsibility for the use or reliability
# of this software.
#
# EMC CORPORATION MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
# SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
# BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
# EMC CORPORATION SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
# LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS
# SOFTWARE OR ITS DERIVATIVES.
#
#############################################################################

##############################################################################
# Functions
#-----------------------------------------------------------------------------
backup_file()
{
  FILE_ORIG=$1
  FILE_BACK=$2

  if [ -f $FILE_ORIG ] ; then
      cp ${FILE_ORIG} ${FILE_BACK}
  else
    echo "File ${FILE_ORIG} does not exist"
  fi
}
#------------------------------------------------------------------------------
clean_rmfile()
{
  RM_FILENAME=$1
  if [ -f $RM_FILENAME ] ; then
    rm ${RM_FILENAME}
  fi
}
#------------------------------------------------------------------------------
logrot()
{
  BASEFILE=$1
  maxNum=5        # max kept archive files
  iterNum=$maxNum # start iterator value
  nextNum=0       # next value; just initialize
  
  # check size of log
  if [ -f $BASEFILE ] ; then
    BASESIZE=`du -sk ${BASEFILE} | awk '{print $1}'`
    #echo File size is currently at $BASESIZE
    if [ $BASESIZE -lt 1 ]; then
      return
    fi
  fi
  
  while [ $iterNum -ne 0 ]
  do
    nextNum=`expr $iterNum + 1`
    if [ -f "${BASEFILE}.${maxNum}" ] && [ "$iterNum" -eq "$maxNum" ] ; then
      #echo "Removing last archived ${BASEFILE}"
      rm -f "${BASEFILE}.${maxNum}"
    fi
    if [ -f "${BASEFILE}.$iterNum" ]; then
      #echo "Incrementing to ${BASEFILE}.${nextNum}"
      mv "${BASEFILE}.$iterNum" "${BASEFILE}.$nextNum"
    fi
    iterNum=`expr $iterNum - 1`
  done
  
  #-- update the first
  if [ -f ${BASEFILE} ] ; then
    mv $BASEFILE ${BASEFILE}.1
  fi
}
#------------------------------------------------------------------------------
stop_all_subagents()
{
  TOOLS_PATH=$1
  STOPALL_MAXLOOP=4
  STOPALL_SLEEP=30
  
  subrtn=`ps -ef | grep $TOOLS_PATH | grep -v grep | grep -v $0 2> /dev/null`
  if [ -n "$subrtn" ] ; then
    echo "EMC ControlCenter Sub Agents stopping ..."
    ps -ef | grep $TOOLS_PATH | grep -v grep | grep -v $0 | awk '{print $2}' | xargs kill
    
    continue_loop=1
    loop_count=1;
    while [ "$continue_loop" = 1 ]
    do
      sleep $STOPALL_SLEEP
	    subrtn=`ps -ef | grep $TOOLS_PATH | grep -vc grep 2> /dev/null`
	    if [ "$subrtn" -gt 0 ] ; then
	      echo "  Agents still running ..."
	      ps -ef | grep $TOOLS_PATH | grep -v grep | awk '{printf("\t%s\n",$8)}'
	    else
	    	continue_loop=0
	    fi
	    loop_count=`expr $loop_count + 1`
	    if [ "$loop_count" -gt $STOPALL_MAXLOOP ] ; then
	      continue_loop=0;
	    fi
	  done
    
    subrtn=`ps -ef | grep $TOOLS_PATH | grep -v grep 2> /dev/null`
    if [ -n "$subrtn" ] ; then
      echo "EMC ControlCenter Sub Agents did not all stop within given time."
      echo "Aborting."
      echo "EMC ControlCenter Sub Agents did not all stop within given time." >> $LOG_FILE
      exit 1
    else
      echo "EMC ControlCenter Sub Agents stopped."
    fi    
  else
    echo "EMC ControlCenter Sub Agents already stopped."
  fi
}
##############################################################################


echo " "
echo " "
echo " ########################################################## "
echo " #                                                        # "
echo " #  EMC Control Center Tools Installation Script          # "
echo " #                                                        # "
echo " ########################################################## "
echo " "
grep "Copyright" $0 | head -1 > /dev/null 2>&1
echo " "
echo " The terms of your use of this software are governed by the "
echo " applicable contract. "
echo " "

ANSWERS_FILE=/tmp/install.txt
 
#---------------------------------------------------------------------------
# Parse Command Line Arguments
# Arg 1 must be absolute path name of the CD/nfs mountpoint.
#---------------------------------------------------------------------------
CD_ROOT=$1
usage_ok=0
this_script=`basename $0`
if [ -n "$CD_ROOT" ] ; then                   # first, we need an argument
  if [ -d "$CD_ROOT" ] ; then                 # it must be a valid directory
    if [ -f "$CD_ROOT/$this_script" ] ; then  # it must contain our script
      char1=`echo $CD_ROOT | cut -c1`
      if [ "$char1" = "/" ] ; then
        usage_ok=1
      else
        echo "ERROR: \"${CD_ROOT}\" is not an absolute path name"
      fi
    else
      echo "ERROR: Cannot find file \"${this_script}\" in directory \"${CD_ROOT}\"."
    fi
  else
    echo "ERROR: \"${CD_ROOT}\" is not a valid directory."
  fi
fi

IS_SILENT=0
export IS_SILENT
SILENT_OPTIONS=""
if [ "-s" = "$2" ] ; then        # test for optional second argument, "-s"
  if [ -n "$3" ] ; then          # test for silent install file argument 
    if [ -f "$3" ] ; then        # test for existence of silent install file
      SILENT_INSTALL_FILE=$3
      echo "Silent Install File = $SILENT_INSTALL_FILE"
      echo ""
      # Set agent default to no
      ECC_HOST_AGENT=""
      ECC_ORACLE_AGENT=""
      ECC_CMA_AGENT=""
      ECC_SYM_AGENT=""
      ECC_SDM_AGENT=""

      # Source-in silent install file and set all "ECC_" variables
      . $SILENT_INSTALL_FILE
      SILENT_OPTIONS="-s $SILENT_INSTALL_FILE"
      IS_SILENT=1
    else
      usage_ok=0
      echo "ERROR: Silent install file does not exist."
    fi
  else
    usage_ok=0
    echo "ERROR: Silent install file not specified."
  fi
fi

if [ $usage_ok -ne 1 ] ; then
  echo ""
  echo "usage: $this_script <mntpt> [-s <silent_install_file>]"
  echo ""
  echo "  <mntpt> must be the absolute path of the media's mount point."
  echo ""
  echo "  [-s <silent_install_file>] : <silent_install_file> must specify"
  echo "                               absolute path to silent install file."
  echo ""
  exit 255
fi
#-------------------------------------------------------------------------
# On Linux, because it's BSD, echo "blah blah blah: \c"  won't work  
# We need to set up the echo cmd for user input.
#-------------------------------------------------------------------------
if [ "`echo -n`" = "-n" ]; then
    C='\c'
    N=
else
    C=
    N='-n'
fi

#---------------------------------------------------------------------------
# Global Variables
#---------------------------------------------------------------------------
OS_TYPE=`/usr/bin/uname 2> /dev/null`
OS_MAJOR=`/usr/bin/uname -v 2> /dev/null`
OS_MINOR=`/usr/bin/uname -r 2> /dev/null`
#---------------------------------------------------------------------------
# On Linux, /usr/bin/uname may not be there
#---------------------------------------------------------------------------
if [ "$OS_TYPE" = "" ]; then OS_TYPE=`/bin/uname`; fi
#---------------------------------------------------------------------------

#---------------------------------------------------------------------------
# Quick check for OS that's not supported.
#---------------------------------------------------------------------------
OS_SUPPORTED=0
MA_PACKAGE=""
HOST_PACKAGE=""
ORACLE_PACKAGE=""
CMA_PACKAGE=""
SYM_PACKAGE=""
SDM_PACKAGE=""

OraAgent="false"
CmaAgent="false"
HostAgent="false"
SymAgent="false"
SdmAgent="false"

if [ "$OS_TYPE" = "SunOS" ] ; then 
    OS_SUPPORTED=1
    NATIVE_DIR="SunOS"
    MA_PACKAGE="ECCMAGT"
    HOST_PACKAGE="ECCHAGT"
    ORACLE_PACKAGE="ECCOAGT"
    CMA_PACKAGE="ECCCAGT"
    SYM_PACKAGE="ECCSAGT"
    SDM_PACKAGE="ECCDAGT"
    HostAgent="true"
    CmaAgent="true"
    OraAgent="true"
    SymAgent="true"
    SdmAgent="true"
    ORACLE_DIR="EGO"
    HOST_DIR="MSR"
    CMA_DIR="EGZ"
    SYM_DIR="EGS"
    SDM_DIR="EGF"
fi
if [ "$OS_TYPE" = "HP-UX" ] ; then 
    OS_SUPPORTED=1 
    NATIVE_DIR="HP-UX"
    MA_PACKAGE="ECCMAGT"
    HOST_PACKAGE="ECCHAGT"
    ORACLE_PACKAGE="ECCOAGT"
    SYM_PACKAGE="ECCSAGT"
    SDM_PACKAGE="ECCDAGT"
    OraAgent="true"
    HostAgent="true"
    SymAgent="true"
    SdmAgent="true"
    ORACLE_DIR="EGO"
    HOST_DIR="MHR"
    SYM_DIR="EGS"
    SDM_DIR="EGF"
fi
if [ "$OS_TYPE" = "Linux" ] ; then 
    OS_SUPPORTED=1 
    NATIVE_DIR="Linux"
    MA_PACKAGE="magent.rpm"
    HOST_PACKAGE="hagent.rpm"   
    HostAgent="true"
    HOST_DIR="MLR"
fi
if [ "$OS_TYPE" = "AIX" ]   ; then 
    OS_SUPPORTED=1
    NATIVE_DIR="AIX" 
    MA_PACKAGE="ECCAGENTS.bff"
    HOST_PACKAGE="ECCAGENTS.bff"
    ORACLE_PACKAGE="ECCAGENTS.bff"
    SYM_PACKAGE="ECCAGENTS.bff"
    SDM_PACKAGE="ECCAGENTS.bff"
    HostAgent="true"
    OraAgent="true"
    SymAgent="true"
    SdmAgent="true"
    HOST_DIR="MAR"
    ORACLE_DIR="EGO"
    SYM_DIR="EGS"
    SDM_DIR="EGF"
fi


if [ $OS_SUPPORTED -ne 1 ] ; then
  echo ""
  echo "ERROR: OS $OS_TYPE $OS_MAJOR $OS_MINOR is not supported."
  echo ""
  exit 1
fi  

#---------------------------------------------------------------------------
# Safety check - avoid overwrite of existing MA!
# Check for upgrade
#---------------------------------------------------------------------------
IS_UPGRADE=0
IS_MAINT=0
ECCRC=/var/emc/.eccrc
if [ -f $ECCRC ] ; then
    if [ $IS_SILENT -eq 1 ] ; then
        echo "Setup detected a previously installed Master Agent.  A silent install file was also detected.  If an upgrade, setup will use the Server Host from the silent file.  Otherwise, setup will continue with the information from the previously installed Master Agent."
	echo ""
    fi
    . $ECCRC
    ECC_PATH=$tools_path
    LOG_FILE=$ECC_PATH/install_native.log
    echo ""
    echo "Log File is located at $LOG_FILE"
    echo ""
    logrot $LOG_FILE
    clean_rmfile $LOG_FILE

    if [ -d $ECC_PATH/exec/MGA610 ] ; then
        echo "A 6.1 Master Agent is already installed"
        echo "Install mode is Maintenance." >> $LOG_FILE
	echo ""
        IS_MAINT=1
    else
        if [ -d $ECC_PATH/exec/MGA600 ] ; then
            echo "A 6.0 Master Agent was found. Setting upgrade mode."
            echo "Install mode is Upgrade." >> $LOG_FILE
	    echo ""
            IS_UPGRADE=1
        else
            if [ -d $ECC_PATH/exec/MGA520 ] ; then
                    echo "A 5.2 Master Agent was found. Setting upgrade mode."
                    echo "Install mode is Upgrade." >> $LOG_FILE
		    echo ""
                    IS_UPGRADE=1
            else
                echo "An unsupported version of Master Agent was found.  Please uninstall from $ECC_PATH to continue."
                echo "ERROR: An unsupported version of Master Agent was found.  Please uninstall from $ECC_PATH to continue." >> $LOG_FILE
                exit 1
            fi
        fi
    fi
fi

if [ $IS_SILENT -eq 1 ] ; then
  if [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ] ; then
      # Ensure that all required values have been set
    if [ -n "$ECC_PATH" ] && [ -n "$ECC_SERVER_HOST" ] && [ -n "$ECC_SERVER_HOSTIP" ] && [ -n "$ECC_SERVER_PORT" ] && [ -n "$ECC_SECURE_PORT" ] &&[ -n "$ECC_MASTER_PORT" ] && [ -n "$ECC_MASTER_STARTUP" ] ; then
        echo "Silent Install Parameters:"
        echo "ECC_PATH = $ECC_PATH"
        echo "ECC_SERVER_HOSTIP = $ECC_SERVER_HOSTIP"
        echo "ECC_SERVER_HOST = $ECC_SERVER_HOST"
        echo "ECC_SERVER_PORT = $ECC_SERVER_PORT"
        echo "ECC_SECURE_PORT = $ECC_SECURE_PORT"
        echo "ECC_MASTER_PORT = $ECC_MASTER_PORT"
        echo "ECC_MASTER_STARTUP = $ECC_MASTER_STARTUP"
        if [ "$ECC_HOST_AGENT" != "" ] ; then
          echo "ECC_HOST_AGENT = $ECC_HOST_AGENT"
        fi
    	if [ "$ECC_ORACLE_AGENT" != "" ] ; then
          echo "ECC_ORACLE_AGENT = $ECC_ORACLE_AGENT"
    	fi
   	if [ "$ECC_CMA_AGENT" != "" ] ; then
          echo "ECC_CMA_AGENT = $ECC_CMA_AGENT"
    	fi
   	if [ "$ECC_SYM_AGENT" != "" ] ; then
          echo "ECC_SYM_AGENT = $ECC_SYM_AGENT"
    	fi
   	if [ "$ECC_SDM_AGENT" != "" ] ; then
          echo "ECC_SDM_AGENT = $ECC_SDM_AGENT"
    	fi
        echo ""
     else
	echo ""
        echo "ERROR: Required install values are missing from the silent install
 file."
        echo "       The file should contain values similar to the example below:"
        echo "       ECC_PATH=/usr/ecc"
        echo "       ECC_SERVER_HOSTIP=123.456.789.10"
        echo "       ECC_SERVER_HOST=foo"
        echo "       ECC_SERVER_PORT=5799"
        echo "       ECC_SECURE_PORT=10799"
        echo "       ECC_MASTER_PORT=5798"
        echo "       ECC_MASTER_STARTUP=Y"
        echo "       [Optional Agents]"
        echo "       ECC_HOST_AGENT=Y"
        echo "       ECC_ORACLE_AGENT=Y"
        echo "       ECC_CMA_AGENT=Y"
        echo "       ECC_SYM_AGENT=Y"
        echo "       ECC_SDM_AGENT=Y"
        echo ""
	exit 1
      fi
  fi
  if [ $IS_UPGRADE -eq 1 ] ; then
    if [ -n "$ECC_SERVER_HOST" ] && [ -n "$ECC_SERVER_HOSTIP" ] ; then
        echo "Silent Install Parameters:"
        echo "ECC_SERVER_HOSTIP = $ECC_SERVER_HOSTIP"
        echo "ECC_SERVER_HOST = $ECC_SERVER_HOST"
        if [ "$ECC_HOST_AGENT" != "" ] ; then
          echo "ECC_HOST_AGENT = $ECC_HOST_AGENT"
        fi
        if [ "$ECC_ORACLE_AGENT" != "" ] ; then
          echo "ECC_ORACLE_AGENT = $ECC_ORACLE_AGENT"
        fi
        if [ "$ECC_CMA_AGENT" != "" ] ; then
          echo "ECC_CMA_AGENT = $ECC_CMA_AGENT"
        fi
        if [ "$ECC_SYM_AGENT" != "" ] ; then
          echo "ECC_SYM_AGENT = $ECC_SYM_AGENT"
        fi
        if [ "$ECC_SDM_AGENT" != "" ] ; then
          echo "ECC_SDM_AGENT = $ECC_SDM_AGENT"
        fi
        echo ""
    else
        echo "ERROR: The silent file is only used during upgrade to change the Server Host or add additional agents.  The required install values are missing from the silent install file."
	echo ""
        echo "       The file should contain values similar to the example below:"
        echo "       ECC_SERVER_HOSTIP=123.456.789.10"
        echo "       ECC_SERVER_HOST=foo"
        echo "       [Optional Agents]"
        echo "       ECC_HOST_AGENT=Y"
        echo "       ECC_ORACLE_AGENT=Y"
        echo "       ECC_CMA_AGENT=Y"
        echo "       ECC_SYM_AGENT=Y"
        echo "       ECC_SDM_AGENT=Y"
        echo ""
	exit 1
    fi
  fi
fi
#Check to make sure all packages are present.  Uses relative DIR.
  if [ ! -f $CD_ROOT/$NATIVE_DIR/$MA_PACKAGE ] ; then
        echo "The Master Agent package ($MA_PACKAGE) does not exist in $CD_ROOT/$NATIVE_DIR."
        exit 1
  else
    if [ "$HOST_PACKAGE" != "" ] ; then
            if [ ! -f $CD_ROOT/$NATIVE_DIR/$HOST_PACKAGE ] ; then
                    echo "The Host Agent package ($HOST_PACKAGE) does not exist in $CD_ROOT/$NATIVE_DIR. All agent packages must exist in the same directory."
            exit 1
            fi
    fi
    if [ "$ORACLE_PACKAGE" != "" ] ; then
            if [ ! -f $CD_ROOT/$NATIVE_DIR/$ORACLE_PACKAGE ] ; then
                    echo "The Oracle Agent package ($ORACLE_PACKAGE) does not exist in $CD_ROOT/$NATIVE_DIR. All agent packages must exist in the same directory."
                    exit 1
            fi
    fi
    if [ "$CMA_PACKAGE" != "" ] ; then
            if [ ! -f $CD_ROOT/$NATIVE_DIR/$CMA_PACKAGE ] ; then
                    echo "The Common Mapping Agent package ($CMA_PACKAGE) does not exist in $CD_ROOT/$NATIVE_DIR. All agent packages must exist in the same directory."
            exit 1
            fi
    fi
    if [ "$SYM_PACKAGE" != "" ] ; then
            if [ ! -f $CD_ROOT/$NATIVE_DIR/$SYM_PACKAGE ] ; then
                    echo "The Symmetrix Agent package ($SYM_PACKAGE) does not exist in $CD_ROOT/$NATIVE_DIR. All agent packages must exist in the same directory."
            exit 1
            fi
    fi
    if [ "$SDM_PACKAGE" != "" ] ; then
            if [ ! -f $CD_ROOT/$NATIVE_DIR/$SDM_PACKAGE ] ; then
                    echo "The Symmetrix SDM Agent package ($SDM_PACKAGE) does not exist in $CD_ROOT/$NATIVE_DIR. All agent packages must exist in the same directory."
            exit 1
            fi
    fi
  fi

#---------------------------------------------------------------------------
# Ask for Target Installation Root
#---------------------------------------------------------------------------
if [ $IS_SILENT -eq 0 ] && [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ]; then 
  ECC_PATH=/usr/ecc
  if [ "$OS_TYPE" = "AIX" ]   ; then
    echo "AIX native installation does not support custom install locations."
    echo "Agents will be installed to ${ECC_PATH}"
  else
    echo $N "Please enter ECC root directory[${ECC_PATH}]: $C"
    read temp
    if [ "${temp}" != "" ]
       then
       temp1=`echo ${temp} | awk '{print $1}' `
       ECC_PATH=${temp1}
    fi
  fi
fi

#-- AIX only allowed to be installed in default location for native installs
if [ "$OS_TYPE" = "AIX" ] && [ "${ECC_PATH}" != "/usr/ecc" ]; then
    echo "ERROR: Native installs on AIX does not support custom install locations."
    echo "       Only /usr/ecc is allowed on AIX."
    echo "Exiting ..."
    echo "ERROR: Native installs on AIX does not support custom install locations."  >> $LOG_FILE
    exit 1
fi

# Create ECC_HOME directory in case it doesn't exist
if [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ] ; then
  if [ ! -d $ECC_PATH ] ; then
          mkdir -p $ECC_PATH
      
  fi
  LOG_FILE=$ECC_PATH/install_native.log
  echo ""
  echo "Log File is located at $LOG_FILE"
  echo ""
  echo "Install mode is Install." >> $LOG_FILE
fi



## set env variable for Japanese inhibition for UNIX master agent install
#setenv LC_ALL C

#------------------------------------------------------------------------------
# For some reason, HPUX 11.23 IA64 does not run properly without this line.
# This is most notable when doing a Native install which requires more
# arguments to be passed in.
#------------------------------------------------------------------------------
echo " "
#------------------------------------------------------------------------------
                                                                               
MGAVER="MGA610"
os_name=`uname -s`
min_port=0
max_port=65536
VAR_EMC_DIR="/var/emc"
VAR_EMC_FILE="/var/emc/.eccrc"

if [ $IS_SILENT = 1 ] ; then
  # IS_SILENT and all vars prefixed with "ECC_" are set in "install_setup.sh"
  SERVER_HOST=$ECC_SERVER_HOSTIP
  SERVER_COMPONENT=$ECC_SERVER_HOST
  SERVER_PORT=$ECC_SERVER_PORT
  SECURE_PORT=$ECC_SECURE_PORT
  MASTER_PORT=$ECC_MASTER_PORT
  ADDMA2RC=$ECC_MASTER_STARTUP
else
if [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ] ; then

  ############################################################################ #
  #Ask all questions up-front in a loop.  Prompt user for confirmation
  # Make sure the appearance is the same between Unix and Windows.
  # Reset the default after each prompted entry (so that it remembers them on
  # the next iteration)
  ############################################################################                                                                                 
  Q_SERVER_HOST_OR_IP="ECC Server's Hostname or IP address"
  Q_SERVER_HOST_ONLY="ECC Server's Hostname"
  Q_SERVER_PORT="ECC Server's Port"
  Q_SECURE_PORT="ECC Secure Server Port"
  Q_MASTER_PORT="Master Agent's Listening Port"
                                                                                
  V_SERVER_HOST="ECC Server Host Name           "
  V_SERVER_PORT="ECC Server Port                "
  V_SECURE_PORT="ECC Secure Server Port         "
  V_MASTER_PORT="Master Agent's Listening Port  "
                                                                                
  D_SERVER_HOST=""
  D_SERVER_PORT=5799
  D_SECURE_PORT=10799
  D_MASTER_PORT=5798

  stay_in_loop=1
  while [ $stay_in_loop = 1 ] 
  do
                                                                                
    echo ""
    echo ""
                                                                                    
    #=========================================================================
    # Ask For Server Address (IP or hostname)
    #=========================================================================
                                                                                
    question="$Q_SERVER_HOST_OR_IP"
    default=$D_SERVER_HOST
                                                                                
    answer=""                              
    while [ "$answer" = "" ]  
    do
      echo $N " ${question} [${default}]: $C"
        read answer
      if [ "$answer" = "" ] ; then         
        answer="$default"                 
      fi                                  
   done

    SERVER_HOST=$answer
    SERVER_COMPONENT=$answer
    D_SERVER_HOST=$answer
                                                                                
    #=========================================================================
    # If it's an IP, prompt for host name (so we can generate component name)
    # It's an IP if it's got 3 dots, 4 fields that are only digits
    #=========================================================================
                                                                                
    nfields=`echo $SERVER_HOST | awk -F. '{print NF}'`
    nothing=`echo $SERVER_HOST | tr -d '.' | tr -d '[0-9]'`
    if [ "$nothing" = "" ] && [ $nfields = 4 ] ; then
      question="$Q_SERVER_HOST_ONLY"
      default=""
                                                                                
      answer=""                     
      while [ "$answer" = "" ] 
    do
        echo $N " ${question} [${default}]: $C"
        read answer                    
        if [ "$answer" = "" ] ; then 
          answer="$default"   
        fi               
    done
                                                                                
      SERVER_COMPONENT=$answer
    fi

    #===========================================================================
    # If it's an IPV6, prompt for host name (so we can generate component name)
    # It's an IPV6 if it's got 7 ":", 8 fields that are hex values
    # User must enter full address, no short cuts for groups of zeros etc.
    #==========================================================================
    nfields=`echo $SERVER_HOST | awk -F: '{print NF}'`
    nothing=`echo $SERVER_HOST | tr -d ':' | tr -d '[0-9]' | tr -d '[a-f]' | tr -d '[A-F]'`
                                                                                
    if [ "$nothing" = "" ] && [ $nfields = 8 ] ; then
      question="$Q_SERVER_HOST_ONLY"
      default=""
                                                                                
      answer=""               
      while [ "$answer" = "" ]
    do
        echo $N " ${question} [${default}]: $C"        
    read answer
        if [ "$answer" = "" ] ; then 
          answer="$default"    
        fi           
      done
        SERVER_COMPONENT=$answer
    fi

                        
    #=========================================================================
    # Ask For Server Port Number
    #=========================================================================
    question="$Q_SERVER_PORT"
    default=$D_SERVER_PORT
                                                                                
    answer=""  
    while [ "$answer" = "" ]    
    do
      echo $N " ${question} [${default}]: $C"
      read answer             
      if [ "$answer" = "" ] ; then 
        answer=$default   
      fi          
                   
      filter=`echo $answer | tr -d '[0-9]'` 
      if [ "$filter" != "" ] ; then    
        answer=0        
      fi

      if [ $answer -le $min_port ] || [ $answer -ge $max_port ] ; then
        echo "Please enter a number between $min_port and $max_port."
        answer=""
      fi
    done
                                                                                
 SERVER_PORT=$answer
 D_SERVER_PORT=$answer

    #==========================================================================
    # Ask For Secure Server Port Number
    #==========================================================================
    question="$Q_SECURE_PORT"
    default=$D_SECURE_PORT
                                                                                
    answer=""          
    while [ "$answer" = "" ]
    do    
      echo $N " ${question} [${default}]: $C"
      read answer               
      if [ "$answer" = "" ] ; then  
        answer="$default"    
      fi                   
                            
      filter=`echo $answer | tr -d '[0-9]'`
      if [ "$filter" != "" ] ; then    
        answer=0                  
      fi
      if [ "$answer" -le "$min_port" ] || [ "$answer" -ge "$max_port" ] ; then
        echo "Please enter a number between $min_port and $max_port."
        answer=""
      fi
    done
      SECURE_PORT=$answer
      D_SECURE_PORT=$answer                                                                   
    #=========================================================================
    # Ask For Master Port Number
    #=========================================================================
    question="$Q_MASTER_PORT"
    default=$D_MASTER_PORT
                                                                                
    answer=""      
    while [ "$answer" = "" ]     
    do
      echo $N " ${question}: [${default}] $C"
      read answer       
      if [ "$answer" = "" ] ; then   
        answer="$default"    
      fi           
                                      
      filter=`echo $answer | tr -d '[0-9]'` 
      if [ "$filter" != "" ] ; then   
        answer=0            
      fi
      if [ $answer -le $min_port ] || [ $answer -ge $max_port ] ; then
        echo "Please enter a number between $min_port and $max_port."
    answer=""
      fi

    done
                                                                                
    MASTER_PORT=$answer
    D_MASTER_PORT=$answer
                                                                                

    #=========================================================================
    # End of questions.  Prompt user if all inputs are acceptable
    #=========================================================================                                                                                 
    echo ""
    echo ""
    echo ""
    echo "###################################################################"
    echo "# Input Verification"
    echo "###################################################################"
    echo ""
    echo $N "$V_SERVER_HOST $SERVER_HOST"
    if [ "$SERVER_HOST" = "$SERVER_COMPONENT" ] ;  then
 echo ""
    else
      echo " (${SERVER_COMPONENT})"
    fi
    echo "$V_SERVER_PORT $SERVER_PORT"
    echo "$V_SECURE_PORT $SECURE_PORT"
    echo "$V_MASTER_PORT $MASTER_PORT"
    echo ""
    answer=""
    while [ "$answer" = "" ]
    do
      echo $N "Are all inputs above acceptable [Y|N|Q]: $C"
      read answer
      case "${answer}" in
        y) 
                   stay_in_loop=0
                   ;;
    Y)
           stay_in_loop=0
                   ;;
        n)        
                   stay_in_loop=1
           ;;
    N)
           stay_in_loop=1
                   ;;
        q)    
                   echo ""
                   echo "Installation aborted"
                   echo ""
           echo "Installation aborted by user" >> $LOG_FILE
                   exit 1
           ;;
    Q)
           echo ""
                   echo "Installation aborted"
                   echo ""
           echo "Installation aborted by user" >> $LOG_FILE
                   exit 1
                   ;;
    x)
                   echo ""
                   echo "Installation aborted"
                   echo ""
           echo "Installation aborted by user" >> $LOG_FILE
                   exit 1
                   ;;

    X)
           echo ""
                   echo "Installation aborted"
                   echo ""
           echo "Installation aborted by user" >> $LOG_FILE
                   exit 1
                   ;;

        *)
                   answer=""
           ;;
      esac
    done
                                                                                
 # end # end of the big input loop!
  done
fi # end of Install Questions
fi # end of IS_SILENT

###############################################################################
# Add Master Agent to /etc/rc.d files (or equivalent)
# Since AIX's implementation of rc.d entries does not behave as defined by
# its man-page, we are currently not supporting this feature for AIX
###############################################################################
                                                                                
if [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ] ; then

STARTUP=""
if [ $OS_TYPE = "AIX" ] ; then
  STARTUP="NO"
fi
                                                                                
echo ""
while [ "$STARTUP" = "" ]
do
  if [ $IS_SILENT = 0 ] ; then
    echo $N "Do you want EMC ControlCenter MasterAgent to start on reboot [Y|N]: $C"
    read ADDMA2RC
  fi

 case  "${ADDMA2RC}" in
    y)    
            STARTUP="YES"
            ;;
    Y)
        STARTUP="YES"
        ;;
    n)
        STARTUP="NO"
        ;;
    N)
        STARTUP="NO"
        ;;
    *)
        if [ $IS_SILENT = 0 ] ; then
          STARTUP=""
        else
          STARTUP="NO"
        fi
        ;;
 esac
 echo "STARTUP = $STARTUP" >> $LOG_FILE
done
fi

#Ask for additional agents

#Host Agent
INSTALLHOST="NO"
if [ $HostAgent = "true" ] ; then
    INSTALLHOST=""
    if [ $IS_UPGRADE -eq 1 ]  ; then
        if [ -f $ECC_PATH/exec/$HOST_DIR"600"/$HOST_DIR".ini" ] || [ -f $ECC_PATH/exec/$HOST_DIR"520"/$HOST_DIR".ini" ] ; then
            INSTALLHOST="YES"
        fi
    fi
    if [ $IS_MAINT -eq 1 ] ; then
        if [ -f $ECC_PATH/exec/$HOST_DIR"610"/$HOST_DIR".ini" ] ; then
            INSTALLHOST="YES"
        fi
    fi
fi
                                                                                
echo ""
while [ "$INSTALLHOST" = "" ]
do
  if [ $IS_SILENT = 0 ] ; then
    echo $N "Do you want to install EMC ControlCenter Host Agent [Y|N]: $C"
    read ECC_HOST_AGENT
  fi
                                                                                
 case  "${ECC_HOST_AGENT}" in
    y)
                INSTALLHOST="YES"
                ;;
    Y)
                INSTALLHOST="YES"
                ;;
    n)
                INSTALLHOST="NO"
        ;;
    N)
                INSTALLHOST="NO"
                ;;
    *)
        if [ $IS_SILENT = 0 ] ; then
          INSTALLHOST=""
        else
          INSTALLHOST="NO"
        fi
        ;;
 esac
 echo "INSTALLHOST = $INSTALLHOST" >> $LOG_FILE
done

#Oracle Agent
INSTALLORACLE="NO"
if [ $OraAgent = "true" ] ; then
        INSTALLORACLE=""
    if [ $IS_UPGRADE -eq 1 ]  ; then
        if [ -f $ECC_PATH/exec/$ORACLE_DIR"600"/$ORACLE_DIR".ini" ] || [ -f $ECC_PATH/exec/$ORACLE_DIR"520"/$ORACLE_DIR".ini" ] ; then
                        INSTALLORACLE="YES"
                fi
        fi
        if [ $IS_MAINT -eq 1 ] ; then
                if [ -f $ECC_PATH/exec/$ORACLE_DIR"610"/$ORACLE_DIR".ini" ] ; then
                        INSTALLORACLE="YES"
                fi
        fi
fi
                                                                                
echo ""
while [ "$INSTALLORACLE" = "" ]
do
  if [ $IS_SILENT = 0 ] ; then
    echo $N "Do you want to install EMC ControlCenter Oracle Agent [Y|N]: $C"
    read ECC_ORACLE_AGENT
  fi
                                                                                
 case  "${ECC_ORACLE_AGENT}" in
    y)
                INSTALLORACLE="YES"
                ;;
    Y)
                INSTALLORACLE="YES"
                ;;
    n)
                INSTALLORACLE="NO"
        ;;
    N)
                INSTALLORACLE="NO"
                ;;
    *)
        if [ $IS_SILENT = 0 ] ; then
          INSTALLORACLE=""
        else
          INSTALLORACLE="NO"
        fi
        ;;
 esac
 echo "INSTALLORACLE = $INSTALLORACLE" >> $LOG_FILE
done

#Common Mapping Agent
INSTALLCMA="NO"
if [ $CmaAgent = "true" ] ; then
        INSTALLCMA=""
    if [ $IS_UPGRADE -eq 1 ]  ; then
                if [ -f $ECC_PATH/exec/$CMA_DIR"600"/$CMA_DIR".ini" ] || [ -f $ECC_PATH/exec/$CMA_DIR"520"/$CMA_DIR".ini" ] ; then
                        INSTALLCMA="YES"
                fi
        fi
        if [ $IS_MAINT -eq 1 ] ; then
                if [ -f $ECC_PATH/exec/$CMA_DIR"610"/$CMA_DIR".ini" ] ; then
                        INSTALLCMA="YES"
                fi
        fi
fi
                                                                                
echo ""
while [ "$INSTALLCMA" = "" ]
do
  if [ $IS_SILENT = 0 ] ; then
    echo $N "Do you want to install EMC ControlCenter Common Mapping Agent [Y|N]: $C"
    read ECC_CMA_AGENT
  fi
                                                                                
 case  "${ECC_CMA_AGENT}" in
    y)
                INSTALLCMA="YES"
                ;;
    Y)
                INSTALLCMA="YES"
                ;;
    n)
                INSTALLCMA="NO"
        ;;
    N)
                INSTALLCMA="NO"
                ;;
    *)
        if [ $IS_SILENT = 0 ] ; then
          INSTALLCMA=""
        else
          INSTALLCMA="NO"
        fi
        ;;
 esac
 echo "INSTALLCMA = $INSTALLCMA" >> $LOG_FILE
done

#Symmetrix Agent
INSTALLSYM="NO"
if [ $SymAgent = "true" ] ; then
        INSTALLSYM=""
    if [ $IS_UPGRADE -eq 1 ]  ; then
                if [ -f $ECC_PATH/exec/$SYM_DIR"600"/$SYM_DIR".ini" ] || [ -f $ECC_PATH/exec/$SYM_DIR"520"/$SYM_DIR".ini" ] ; then
                        INSTALLSYM="YES"
                fi
        fi
        if [ $IS_MAINT -eq 1 ] ; then
                if [ -f $ECC_PATH/exec/$SYM_DIR"610"/$SYM_DIR".ini" ] ; then
                        INSTALLSYM="YES"
                fi
        fi
fi
                                                                                
echo ""
while [ "$INSTALLSYM" = "" ]
do
  if [ $IS_SILENT = 0 ] ; then
    echo $N "Do you want to install EMC ControlCenter Symmetrix Agent [Y|N]: $C"
    read ECC_SYM_AGENT
  fi
                                                                                
 case  "${ECC_SYM_AGENT}" in
    y)
                INSTALLSYM="YES"
                ;;
    Y)
                INSTALLSYM="YES"
                ;;
    n)
                INSTALLSYM="NO"
        ;;
    N)
                INSTALLSYM="NO"
                ;;
    *)
        if [ $IS_SILENT = 0 ] ; then
          INSTALLSYM=""
        else
          INSTALLSYM="NO"
        fi
        ;;
 esac
 echo "INSTALLSYM = $INSTALLSYM" >> $LOG_FILE
done

#SDM Agent
INSTALLSDM="NO"
if [ $SdmAgent = "true" ] ; then
        INSTALLSDM=""
    if [ $IS_UPGRADE -eq 1 ]  ; then
                if [ -f $ECC_PATH/exec/$SDM_DIR"600"/$SDM_DIR".ini" ] || [ -f $ECC_PATH/exec/$SDM_DIR"520"/$SDM_DIR".ini" ] ; then
                        INSTALLSDM="YES"
                fi
        fi
        if [ $IS_MAINT -eq 1 ] ; then
                if [ -f $ECC_PATH/exec/$SDM_DIR"610"/$SDM_DIR".ini" ] ; then
                        INSTALLSDM="YES"
                fi
        fi
fi
                                                                                
echo ""
while [ "$INSTALLSDM" = "" ]
do
  if [ $IS_SILENT = 0 ] ; then
    echo $N "Do you want to install EMC ControlCenter Symmetrix SDM Agent [Y|N]: $C"
    read ECC_SDM_AGENT
  fi
                                                                                
 case  "${ECC_SDM_AGENT}" in
    y)
                INSTALLSDM="YES"
                ;;
    Y)
                INSTALLSDM="YES"
                ;;
    n)
                INSTALLSDM="NO"
        ;;
    N)
                INSTALLSDM="NO"
                ;;
    *)
        if [ $IS_SILENT = 0 ] ; then
          INSTALLSDM=""
        else
          INSTALLSDM="NO"
        fi
        ;;
 esac
 echo "INSTALLSDM = $INSTALLSDM" >> $LOG_FILE
done

#//////////////////////////////////////////////////////////////////////////////
#---------------------------------------------------------------------------
# Check for disk space
# Variable Name Convention:  kb_<product>_<mntpt>a
#                            <product> is the product that needs the space
#                            <mntpt> is the spot where the space is needed
#---------------------------------------------------------------------------
kb_logs=25600 # 25 megabytes
kb_percent=10 # 10% padding

case "${OS_TYPE}" in
  SunOS) kb_host=`expr 50000 + $kb_logs`
         kb_mstr=`expr 48175 + $kb_logs`
         kb_cmap=`expr 5000 + $kb_logs`
         kb_orac=`expr 108000 + $kb_logs`
         kb_sym=`expr 13000 + $kb_logs`
         kb_sdm=`expr 5000 + $kb_logs`
         ;;
  HP-UX) kb_host=`expr 50000 + $kb_logs`
         kb_mstr=`expr 42993 + $kb_logs`
         kb_cmap=0
         kb_orac=`expr 112000 + $kb_logs`
         kb_sym=`expr 22000 + $kb_logs`
         kb_sdm=`expr 9000 + $kb_logs`
         ;;
    AIX) kb_host=`expr 50000 + $kb_logs`
         kb_mstr=`expr 61219 + $kb_logs`
         kb_cmap=0
         kb_orac=`expr 110000 + $kb_logs`
         kb_sym=`expr 20000 + $kb_logs`
         kb_sdm=`expr 9000 + $kb_logs`
         ;;
  Linux) kb_host=`expr 50000 + $kb_logs`
         kb_mstr=`expr 51732 + $kb_logs`
         kb_cmap=0
         kb_orac=0
         kb_sym=0
         kb_sdm=0
         ;;
esac

# How much space is needed in each mountpoint?

MIN_KB_NA=$kb_mstr

if [ "$INSTALLHOST" = "YES" ] ; then
  MIN_KB_NA=`expr $MIN_KB_NA + $kb_host`
fi
if [ "$INSTALLORACLE" = "YES" ] ; then
  MIN_KB_NA=`expr $MIN_KB_NA + $kb_orac`
fi
if [ "$INSTALLCMA" = "YES" ] ; then
  MIN_KB_NA=`expr $MIN_KB_NA + $kb_cmap`
fi

if [ "$INSTALLSYM" = "YES" ] ; then
  MIN_KB_NA=`expr $MIN_KB_NA + $kb_sym`
fi

if [ "$INSTALLSDM" = "YES" ] ; then
  MIN_KB_NA=`expr $MIN_KB_NA + $kb_sdm`
fi

PAD_KB_NA=`expr $MIN_KB_NA / $kb_percent`
MIN_KB_NA=`expr $MIN_KB_NA + $PAD_KB_NA`


# Check both dirs (potentially same mount point) for space

case "${OS_TYPE}" in
  SunOS)
    SPACEKB=`df -k $ECC_PATH | awk '{print $4}' | tail -1`
    MNTPT=`df -k $ECC_PATH | awk '{print $6}' | tail -1`
    echo $SPACEKB | grep '%' > /dev/null 2>&1
    if [ $? -eq 0 ] ; then # df -k must have line-wrapped!
      SPACEKB=`df -k $ECC_PATH | awk '{print $3}' | tail -1`
      MNTPT=`df -k $ECC_PATH | awk '{print $5}' | tail -1`
    fi
    ;;
  HP-UX)
    SPACEKB=`bdf $ECC_PATH | awk '{print $4}' | tail -1`
    MNTPT=`bdf $ECC_PATH | awk '{print $6}' | tail -1`
    echo $SPACEKB | grep '%' > /dev/null 2>&1
    if [ $? -eq 0 ] ; then # bdf must have line-wrapped!
      SPACEKB=`bdf $ECC_PATH | awk '{print $3}' | tail -1`
      MNTPT=`bdf $ECC_PATH | awk '{print $5}' | tail -1`
    fi
    ;;
  AIX)
    # Note, AIX's implementation of "df" never line-wraps
    SPACEKB=`df -k $ECC_PATH | awk '{print $3}' | tail -1`
    MNTPT=`df -k $ECC_PATH | awk '{print $7}' | tail -1`
    ;;
  Linux)
    SPACEKB=`df -k $ECC_PATH | awk '{print $4}' | tail -1`
    MNTPT=`df -k $ECC_PATH | awk '{print $6}' | tail -1`
    echo $SPACEKB | grep '%' > /dev/null 2>&1
    if [ $? -eq 0 ] ; then # df -k must have line-wrapped!
      SPACEKB=`df -k $ECC_PATH | awk '{print $3}' | tail -1`
      MNTPT=`df -k $ECC_PATH | awk '{print $5}' | tail -1`
    fi
    ;;
esac                                                                          
MA_MNTPT=$MNTPT
MA_SPACE=$SPACEKB

#//////////////////////////////////////////////////////////////////////////////

if [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ] ; then
    echo ""
    echo "NativeAgent Target FileSystem ..... $MA_MNTPT"
    echo "  Disk Space Detected ............. $MA_SPACE kb"
    echo "  Disk Space Required (minimum) ... $MIN_KB_NA kb"


    if [ $MIN_KB_NA -gt $MA_SPACE ] ; then
      echo "ERROR: There is insufficent disk space to install selected agents"
      echo "       under $MA_MNTPT"
      echo "Exiting ..."
      echo "ERROR: There is insufficent disk space to install agents under $MA_MNTPT"  >> $LOG_FILE
      exit 1
    fi

    if [ ! -d /tmp ] ; then
        mkdir /tmp
    fi
fi
if  [ $IS_UPGRADE -eq 0 ] && [ $IS_MAINT -eq 0 ] ; then
    #Store variables in install.txt file
    echo "ECC_SERVER_HOST=$SERVER_COMPONENT" > $ANSWERS_FILE
    echo "ECC_SERVER_HOSTIP=$SERVER_HOST" >> $ANSWERS_FILE
    echo "ECC_SERVER_PORT=$SERVER_PORT" >> $ANSWERS_FILE
    echo "ECC_SECURE_SERVER_PORT=$SECURE_PORT" >> $ANSWERS_FILE
    echo "ECC_MASTER_PORT=$MASTER_PORT" >> $ANSWERS_FILE
    echo "ECC_PATH=$ECC_PATH" >> $ANSWERS_FILE
    echo "ECC_MASTER_STARTUP=$STARTUP" >> $ANSWERS_FILE

    echo "ECC PATH = $ECC_PATH" >> $LOG_FILE
    echo "ECC SERVER HOST = $SERVER_COMPONENT" >> $LOG_FILE
    echo "ECC SERVER HOSTIP = $SERVER_HOST" >> $LOG_FILE
    echo "ECC SERVER PORT = $SERVER_PORT" >> $LOG_FILE
    echo "ECC SECURE SERVER PORT = $SECURE_PORT" >> $LOG_FILE
    echo "ECC MASTER PORT = $MASTER_PORT" >> $LOG_FILE
fi

if  [ $IS_UPGRADE -eq 1 ] && [ $IS_SILENT -eq 1 ] ; then
    echo "ECC_SERVER_HOST=$SERVER_COMPONENT" > $ANSWERS_FILE
    echo "ECC_SERVER_HOSTIP=$SERVER_HOST" >> $ANSWERS_FILE

    echo "Upgrading with a silent file.  New Server Host will be $SERVER_HOST" >> $LOG_FILE
    echo "ECC SERVER HOST = $SERVER_COMPONENT" >> $LOG_FILE
    echo "ECC SERVER HOSTIP = $SERVER_HOST" >> $LOG_FILE
fi

# Set installation/upgrade text for logs
if  [ $IS_UPGRADE -eq 0 ] ; then
	INSTALLLOGMODE="Installation"
	INSTALLPKGLOGMODE="Installing"
else
	INSTALLLOGMODE="Upgrade"
        INSTALLPKGLOGMODE="Upgrading"
fi

#LINUX
if [ $OS_TYPE = "Linux" ] ; then
    RETV=0
    echo "$INSTALLPKGLOGMODE Master Agent..."
    echo "$INSTALLPKGLOGMODE $MA_PACKAGE..." >> $LOG_FILE
    rpm -Uvh $CD_ROOT/$NATIVE_DIR/$MA_PACKAGE --prefix=$ECC_PATH >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Master Agent failed."
        echo "$INSTALLLOGMODE of Master Agent failed." >> $LOG_FILE
	echo "Please refer to $LOG_FILE"
	exit 1
    fi
  if [ $INSTALLHOST = "YES" ] ; then
    echo "$INSTALLPKGLOGMODE Host Agent..."
    echo "$INSTALLPKGLOGMODE $HOST_PACKAGE..." >> $LOG_FILE
    rpm -Uvh $CD_ROOT/$NATIVE_DIR/$HOST_PACKAGE --prefix=$ECC_PATH >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
      echo "$INSTALLLOGMODE of Host Agent failed."
      echo "$INSTALLLOGMODE of Host Agent failed." >> $LOG_FILE
    fi
  fi
  if [ -f /etc/init.d/eccmad ] ; then
    if [ -f /etc/redhat-release ] ; then
      initdir="/etc/rc.d/init.d"
      rcsdir="/etc/rc.d/rc3.d"
    else
      initdir="/etc/init.d"
      rcsdir="/etc/init.d/rc3.d"
    fi
    if [ ! -f $rcsdir/S99eccmad ] ; then
      echo "Setting up startup scripts."
      echo "Setting up startup scripts." >> $LOG_FILE
      ln -s $initdir/eccmad $rcsdir/S99eccmad
      ln -s $initdir/eccmad $rcsdir/K00eccmad
    fi
  fi
  echo "$INSTALLLOGMODE is complete."
  echo "$INSTALLLOGMODE is complete." >> $LOG_FILE
fi

#HP-UX
if [ $OS_TYPE = "HP-UX" ] ;  then
    RETV=0
    echo "$INSTALLPKGLOGMODE Master Agent..."
    echo "$INSTALLPKGLOGMODE $MA_PACKAGE..." >> $LOG_FILE
    swinstall -s $CD_ROOT/$NATIVE_DIR/$MA_PACKAGE ECC_MAGENT,l=$ECC_PATH >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Master Agent failed."
        echo "$INSTALLLOGMODE of Master Agent failed." >> $LOG_FILE
	echo "Please refer to $LOG_FILE"
	exit 1
    fi
    if [ $INSTALLHOST = "YES" ] ; then
      echo "$INSTALLPKGLOGMODE Host Agent..."
      echo "$INSTALLPKGLOGMODE $HOST_PACKAGE..." >> $LOG_FILE
      swinstall -s $CD_ROOT/$NATIVE_DIR/$HOST_PACKAGE ECC_HAGENT,l=$ECC_PATH >> $LOG_FILE 2>&1
      RETV=$?
      if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Host Agent failed."
        echo "$INSTALLLOGMODE of Host Agent failed." >> $LOG_FILE
      fi
    fi
    if [ $INSTALLORACLE = "YES" ] ; then
      echo "$INSTALLPKGLOGMODE Oracle Agent..."
      echo "$INSTALLPKGLOGMODE $ORACLE_PACKAGE..." >> $LOG_FILE
      swinstall -s $CD_ROOT/$NATIVE_DIR/$ORACLE_PACKAGE ECC_OAGENT,l=$ECC_PATH >> $LOG_FILE 2>&1
      RETV=$?
      if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Oracle Agent failed."
        echo "$INSTALLLOGMODE of Oracle Agent failed." >> $LOG_FILE
      fi
    fi
    if [ $INSTALLSYM = "YES" ] ; then
      echo "$INSTALLPKGLOGMODE Symmetrix Agent..."
      echo "$INSTALLPKGLOGMODE $SYM_PACKAGE..." >> $LOG_FILE
      swinstall -s $CD_ROOT/$NATIVE_DIR/$SYM_PACKAGE ECC_SAGENT,l=$ECC_PATH >> $LOG_FILE 2>&1
      RETV=$?
      if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Symmetrix Agent failed."
        echo "$INSTALLLOGMODE of Symmetrix Agent failed." >> $LOG_FILE
      fi
    fi
    if [ $INSTALLSDM = "YES" ] ; then
      echo "$INSTALLPKGLOGMODE Symmetrix SDM Agent..."
      echo "$INSTALLPKGLOGMODE $SDM_PACKAGE..." >> $LOG_FILE
      swinstall -s $CD_ROOT/$NATIVE_DIR/$SDM_PACKAGE ECC_DAGENT,l=$ECC_PATH >> $LOG_FILE 2>&1
      RETV=$?
      if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Symmetrix SDM Agent failed."
        echo "$INSTALLLOGMODE of Symmetrix SDM Agent failed." >> $LOG_FILE
      fi
    fi

    echo "$INSTALLLOGMODE is complete."
    echo "$INSTALLLOGMODE is complete." >> $LOG_FILE
fi

#////////////////////////////////////////////////////////////////////////////////////////
#AIX
if [ $OS_TYPE = "AIX" ] ; then
  RETV=0
  
  clean_rmfile /tmp/installnima.log
  clean_rmfile /tmp/installnihost.log
  clean_rmfile /tmp/installniora.log
  clean_rmfile /tmp/installnisym.log
  clean_rmfile /tmp/installnisdm.log

  if [ $IS_UPGRADE -eq 1 ] || [ $IS_MAINT -eq 1 ] ; then
    stop_all_subagents $ECC_PATH
  fi 
  
#  if [ $IS_MAINT -eq 0 ] ; then
    if [ $IS_UPGRADE -eq 0 ] ; then
      echo "$INSTALLPKGLOGMODE Master Agent..."
      #echo "Installing $MA_PACKAGE..." >> $LOG_FILE
      installp -a -X -q -e /tmp/installnima.log -d $CD_ROOT/$NATIVE_DIR/$MA_PACKAGE ECCAGENTS.MASTER >> $LOG_FILE 2>&1
      RETV=$?
    else
      if [ $IS_UPGRADE -eq 1 ] ; then
        echo "$INSTALLPKGLOGMODE Master Agent..."
        #echo "Upgrading $MA_PACKAGE..."
        installp -a -X -q -e /tmp/installnima.log -d $CD_ROOT/$NATIVE_DIR/$MA_PACKAGE ECCAGENTS.MASTER >> $LOG_FILE 2>&1
        RETV=$?
      fi
    fi
    if [ $RETV -ne 0 ] ; then
      echo "$INSTALLLOGMODE for Master Agent failed."
      echo "$INSTALLLOGMODE for Master Agent failed." >> $LOG_FILE
      exit 1
    fi
#  fi
  
  #--------------------------------------------------------------------------------------
  if [ $INSTALLHOST = "YES" ] ; then
    echo "$INSTALLPKGLOGMODE Host Agent..."
    #echo "Installing $HOST_PACKAGE..." >> $LOG_FILE
    installp -a -X -q -e /tmp/installnihost.log -d $CD_ROOT/$NATIVE_DIR/$HOST_PACKAGE ECCAGENTS.HOST >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] ; then
      echo "$INSTALLLOGMODE for Host Agent failed."
      echo "$INSTALLLOGMODE for Host Agent failed." >> $LOG_FILE
    fi
  fi
  #--------------------------------------------------------------------------------------
  if [ $INSTALLORACLE = "YES" ] ; then
    echo "$INSTALLPKGLOGMODE Oracle Agent..."
    #echo "Installing $ORACLE_PACKAGE..." >> $LOG_FILE 
    installp -a -X -q -e /tmp/installniora.log -d $CD_ROOT/$NATIVE_DIR/$ORACLE_PACKAGE ECCAGENTS.ORACLE >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] ; then
      echo "$INSTALLLOGMODE for Oracle Agent failed."
      echo "$INSTALLLOGMODE for Oracle Agent failed." >> $LOG_FILE
    fi
  fi
  #--------------------------------------------------------------------------------------
  if [ $INSTALLSYM = "YES" ] ; then
    echo "$INSTALLPKGLOGMODE Symmetrix Agent..."
    #echo "Installing $SYM_PACKAGE..." >> $LOG_FILE 
    installp -a -X -q -e /tmp/installnisym.log -d $CD_ROOT/$NATIVE_DIR/$SYM_PACKAGE ECCAGENTS.SYMMETRIX >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] ; then
      echo "$INSTALLLOGMODE for Symmetrix Agent failed."
      echo "$INSTALLLOGMODE for Symmetrix Agent failed." >> $LOG_FILE
    fi
  fi
  #--------------------------------------------------------------------------------------
  if [ $INSTALLSDM = "YES" ] ; then
    echo "$INSTALLPKGLOGMODE Symmetrix SDM Agent..."
    #echo "Installing $SDM_PACKAGE..." >> $LOG_FILE 
    installp -a -X -q -e /tmp/installnisdm.log -d $CD_ROOT/$NATIVE_DIR/$SDM_PACKAGE ECCAGENTS.SDM >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] ; then
      echo "$INSTALLLOGMODE for Symmetrix SDM Agent failed."
      echo "$INSTALLLOGMODE for Symmetrix SDM Agent failed." >> $LOG_FILE
    fi
  fi
  #--------------------------------------------------------------------------------------

  echo "$INSTALLLOGMODE is complete."
  echo "$INSTALLLOGMODE is complete." >> $LOG_FILE
fi  
#////////////////////////////////////////////////////////////////////////////////////////

#SunOS

if [ $OS_TYPE = "SunOS" ] ; then

    RETV=0
    if [ $IS_UPGRADE -eq 1 ] || [ $IS_MAINT -eq 1 ] ; then
      stop_all_subagents $ECC_PATH
    fi 
    # Create admin file for SunOS silent install and uninstall.
    echo "Creating admin file..."
    echo "Creating admin file..." >> $LOG_FILE
    sunosAdminfile="/tmp/sunosAdminfile"
    cat /var/sadm/install/admin/default | sed -e 's/ask/nocheck/' >> $sunosAdminfile
    
    mv $sunosAdminfile $sunosAdminfile".bak"
    sed -e "s/unique/overwrite/g" $sunosAdminfile".bak" > $sunosAdminfile

    mv $sunosAdminfile $sunosAdminfile".bak"
    sed -e "s%default%$ECC_PATH%g" $sunosAdminfile".bak" > $sunosAdminfile
    
    installOptions="-n -a $sunosAdminfile"
    
    echo "$INSTALLPKGLOGMODE Master Agent..."
    echo "$INSTALLPKGLOGMODE $MA_PACKAGE..." >> $LOG_FILE
    pkgadd -d $NATIVE_DIR/$MA_PACKAGE $installOptions all >> $LOG_FILE 2>&1
    RETV=$?
    if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
        echo "$INSTALLLOGMODE of Master Agent failed."
        echo "$INSTALLLOGMODE of Master Agent failed." >> $LOG_FILE
	echo "Please refer to $LOG_FILE"
 	exit 1
    fi
    
    if [ $INSTALLHOST = "YES" ] ; then
        echo "$INSTALLPKGLOGMODE Host Agent..."
        echo "$INSTALLPKGLOGMODE $HOST_PACKAGE..." >> $LOG_FILE
        pkgadd -d $NATIVE_DIR/$HOST_PACKAGE $installOptions all >> $LOG_FILE 2>&1
        RETV=$?
        if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
            echo "$INSTALLLOGMODE for Host Agent failed."
            echo "$INSTALLLOGMODE for Host Agent failed." >> $LOG_FILE
        fi
    fi
    
    if [ $INSTALLORACLE = "YES" ] ; then
        echo "$INSTALLPKGLOGMODE Oracle Agent..."
        echo "$INSTALLPKGLOGMODE $ORACLE_PACKAGE..." >> $LOG_FILE
        pkgadd -d $NATIVE_DIR/$ORACLE_PACKAGE $installOptions all >> $LOG_FILE 2>&1
        RETV=$?
        if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
            echo "$INSTALLLOGMODE for Oracle Agent failed."
            echo "$INSTALLLOGMODE for Oracle Agent failed." >> $LOG_FILE
        fi
    fi
    
    if [ $INSTALLCMA = "YES" ] ; then
        echo "$INSTALLPKGLOGMODE Common Mapping Agent..."
        echo "$INSTALLPKGLOGMODE $CMA_PACKAGE..." >> $LOG_FILE
        pkgadd -d $NATIVE_DIR/$CMA_PACKAGE $installOptions all >> $LOG_FILE 2>&1
        RETV=$?
        if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
            echo "$INSTALLLOGMODE for Common Mapping Agent failed."
            echo "$INSTALLLOGMODE for Common Mapping Agent failed." >> $LOG_FILE
        fi
    fi

    if [ $INSTALLSYM = "YES" ] ; then
        echo "$INSTALLPKGLOGMODE Symmetrix Agent..."
        echo "$INSTALLPKGLOGMODE $SYM_PACKAGE..." >> $LOG_FILE
        pkgadd -d $NATIVE_DIR/$SYM_PACKAGE $installOptions all >> $LOG_FILE 2>&1
        RETV=$?
        if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
            echo "$INSTALLLOGMODE for Symmetrix Agent failed."
            echo "$INSTALLLOGMODE for Symmetrix Agent failed." >> $LOG_FILE
        fi
    fi

    if [ $INSTALLSDM = "YES" ] ; then
        echo "$INSTALLPKGLOGMODE Symmetrix SDM Agent..."
        echo "$INSTALLPKGLOGMODE $SDM_PACKAGE..." >> $LOG_FILE
        pkgadd -d $NATIVE_DIR/$SDM_PACKAGE $installOptions all >> $LOG_FILE 2>&1
        RETV=$?
        if [ $RETV -ne 0 ] && [ $IS_MAINT -eq 0 ] ; then
            echo "$INSTALLLOGMODE for Symmetrix SDM Agent failed."
            echo "$INSTALLLOGMODE for Symmetrix SDM Agent failed." >> $LOG_FILE
        fi
    fi

    if [ -f $sunosAdminfile ] ; then
        rm -f $sunosAdminfile 2>/dev/null
    fi

    echo "$INSTALLLOGMODE is complete."
    echo "$INSTALLLOGMODE is complete." >> $LOG_FILE
fi

if [ -f $ANSWERS_FILE ] ; then
  rm -f $ANSWERS_FILE 2>/dev/null
fi

echo "Please refer to $LOG_FILE for any issues with the $INSTALLLOGMODE."
