123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- #!/bin/sh
- ###############################################################################
- # WebSphere Application Server liberty admininstrative pre-uninstall script for
- # IBM i
- #
- # Copyright IBM Corp. 2012, 2013
- # The source code for this program is not published or other-
- # wise divested of its trade secrets, irrespective of what has
- # been deposited with the U.S. Copyright Office.
- #
- # ----------------------------------------------------------------------------
- #
- # Run the _iPreUninstallUtility script before removing product files on IBM i.
- # However, this step is only for manual administrative "unzip"
- # installations. Do not use this command for manual developer installations.
- # The administrator must have *ALLOBJ and *SECADM special authority to run this
- # script.
- #
- #
- usage() {
- echo ""
- echo "Usage: _iPreUninstallUtility [options]"
- echo ""
- echo "Options:"
- echo " --action [ DLTPRDLOD | DLTPRDLIB | DLTSHRPRDLIB ]"
- echo " --appdatadir im_application_data_directory"
- echo ""
- echo "The --appdatadir option is required for the"
- echo "DLTPRDLOD action and is ignored by all other actions."
- exit 1
- }
- set_wlp_install_dir() {
- CUR_DIR=`pwd`
- WLP_DIR=`dirname ${0}`/../../../../
- cd "${WLP_DIR}"
- WLP_INSTALL_DIR=`pwd`
- cd "${CUR_DIR}"
- }
- ##
- ## evalJavaPropsFile: Reads Java properties from file specified in $1,
- ## and for every property it replaces all "." with "_" in the property name,
- ## sets the resulting named script variable to the property value and exports
- ## the variable.
- evalJavaPropsFile()
- {
- if [ -f "$1" ]; then
- while read -r line; do
- case $line in
- \#*);;
- *=*)
- # Only accept alphanumeric variable names to avoid eval complexities.
- if var=`echo "$line" | sed -e 's/^\([a-zA-Z0-9_\.][a-zA-Z0-9_\.]*\)=.*/\1/'`; then
- var=`echo $var | sed -e 's/\./_/g'`
- value=\'`echo "$line" | sed -e 's/[^=]*=//' -e s/\'/\'\"\'\"\'/g`\'
- eval "$var=$value; export $var"
- fi
- esac
- done < "$1"
- fi
- }
- delete_prod_lib() {
- echo "Executing delete_prod_lib"
- if [ -e ${WAS_PRODUCT_LIB_PATH} ]; then
- system "QSYS/DLTLIB LIB(${WAS_PRODUCT_LIB})"
- if [ $? -ne 0 ]; then
- ERR_CHK=1
- fi
- fi
- }
- delete_shared_prod_lib() {
- echo "Executing delete_shared_prod_lib"
- ALPHABET="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Z"
- PROD_LIB=${SHR_PROD_LIB}A
- DELETE_SHR_PRD_LIB=true
- for letter in $ALPHABET
- do
- if [ -e /QSYS.LIB/${PROD_LIB}.LIB ]; then
- DELETE_SHR_PRD_LIB=false
- echo "Library /QSYS.LIB/${PROD_LIB}.LIB exists, so the shared library will not be deleted"
- else
- echo "Library /QSYS.LIB/${PROD_LIB}.LIB does not exist"
- fi
- PROD_LIB=${SHR_PROD_LIB}${letter}
- done
- if [ "$DELETE_SHR_PRD_LIB" = "true" ]; then
- echo "Clearing output queue"
- system "QSYS/CLROUTQ OUTQ(QWAS9/QWASOUTQ)"
- if [ $? -ne 0 ]; then
- ERR_CHK=1
- fi
- echo "Removing TCP Service Table port entries"
- system "QSYS/CALL PGM(QWAS9/QWASCLN)"
- if [ $? -ne 0 ]; then
- ERR_CHK=1
- fi
- echo "Ending QWAS9 subsystem"
- system "QSYS/ENDSBS SBS(QWAS9) OPTION(*IMMED)"
- sleep 5
- echo "Since this is the last product, we can safely remove the Base Product Load QWAS00M"
- export QIBM_MULTI_THREADED=N
- system "CALL QSYS/QSZDLTPL PARM('$1 QWAS9 ' '')"
- if [ $? -ne 0 ]; then
- ERR_CHK=1
- fi
- system "QSYS/DLTLIB LIB(QWAS9)"
- if [ $? -ne 0 ]; then
- ERR_CHK=1
- fi
- else
- echo "Did not remove the shared product library (QWAS9) because other product installations are using the shared library"
- fi
- }
- delete_prod_load() {
- APP_DATA_LOC=$1
- echo "IM App Data location used: ${APP_DATA_LOC}"
- if [ "$PRODUCT_EDITION" = "EXPRESS" ]; then
- grep package.*com.ibm.websphere.liberty.EXPRESS.v90 ${APP_DATA_LOC}/installed.xml > tmp
- grep package.*com.ibm.websphere.liberty.EXPRESSTRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.liberty.WEBENAB.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.EXPRESS.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.EXPRESSTRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.WEBENAB.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- PROD_LOAD=QWAS01M
- echo "Product Load = $PROD_LOAD"
- fi
- if [ "$PRODUCT_EDITION" = "BASE" ]; then
- grep package.*com.ibm.websphere.liberty.BASE.v90 ${APP_DATA_LOC}/installed.xml > tmp
- grep package.*com.ibm.websphere.liberty.BASETRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.BASE.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.BASETRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.DEVELOPERS.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.DEVELOPERSILAN.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- PROD_LOAD=QWAS02M
- echo "Product Load = $PROD_LOAD"
- fi
- if [ "$PRODUCT_EDITION" = "DEVELOPERS" ]; then
- grep package.*com.ibm.websphere.liberty.DEVELOPERS.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.liberty.DEVELOPERSILAN.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- PROD_LOAD=QWAS02M
- echo "Product Load = $PROD_LOAD"
- fi
- if [ "$PRODUCT_EDITION" = "ND" ]; then
- grep package.*com.ibm.websphere.liberty.ND.v90 ${APP_DATA_LOC}/installed.xml > tmp
- grep package.*com.ibm.websphere.liberty.NDTRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.ND.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- grep package.*com.ibm.websphere.NDTRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- PROD_LOAD=QWAS03M
- echo "Product Load = $PROD_LOAD"
- fi
- if [ "$PRODUCT_EDITION" = "LIBERTY_CORE" ]; then
- grep package.*com.ibm.websphere.liberty.v90 ${APP_DATA_LOC}/installed.xml > tmp
- grep package.*com.ibm.websphere.liberty.TRIAL.v90 ${APP_DATA_LOC}/installed.xml >> tmp
- PROD_LOAD=QWAS05M
- echo "Product Load = $PROD_LOAD"
- fi
- count=0
- if [ -e tmp ]; then
- while read line
- do
- echo "$line"
- count=`expr $count + 1`
- done < tmp
- rm -f tmp
- echo "Total instances of package $PRODUCT_EDITION = $count"
-
- if [ -e /QSYS.LIB/QWAS9.LIB/${PROD_LOAD}.PRDLOD ]; then
- if [ $count -le 1 ]; then
- export QIBM_MULTI_THREADED=N
- system "CALL QSYS/QSZDLTPL PARM('${PROD_LOAD} QWAS9 ' '')"
- else
- echo "Not removing product load $PROD_LOAD because there are more than one instance of this offering"
- fi
- else
- echo "Product load $PROD_LOAD was not found"
- fi
- else
- echo "Could not find any instance of the offering $PRODUCT_EDITION, doing nothing"
- fi
- }
- do_default() {
- #
- echo "Executing $ACTION"
- delete_prod_lib
- delete_shared_prod_lib
- }
- if [ "`uname`" != "OS400" ]; then
- exit 1
- fi
- # Validate parameters
- # Do the whole 9 yards if no parameters are passed.
- ACTION=DODEFAULT
- ERR_CHK=0
- APPDATADIR=
- while [ $# -gt 0 ]; do
- case $1 in
- '--action') if [ $# -gt 1 ]; then
- ACTION=$2;shift
- fi
- ;;
- '--appdatadir') if [ $# -gt 1 ]; then
- APPDATADIR=$2;shift
- fi
- ;;
- *) usage
- ;;
- esac
- shift
- done
- echo "Action = $ACTION"
- if [ ${ACTION} = "DLTPRDLOD" ]; then
- if [ ! ${APPDATADIR} ]; then
- usage
- fi
- fi
- SHR_PROD_LIB=QWAS9
- set_wlp_install_dir
- echo "WebSphere liberty profile install root is ${WLP_INSTALL_DIR}"
- evalJavaPropsFile ${WLP_INSTALL_DIR}/lib/versions/WebSphereApplicationServer.properties
- echo "Product edition is "${com_ibm_websphere_productEdition}
- echo "Installation type is "${com_ibm_websphere_productInstallType}
- IS_IM_INSTALL=
- if [ ${com_ibm_websphere_productInstallType} = "InstallationManager" ]; then
- IS_IM_INSTALL=true
- else
- SCRIPT_DIR="${WLP_INSTALL_DIR}/bin"
- LSOUT=`ls -ld ${SCRIPT_DIR}`
- SCRIPT_DIR_OWNER=
- FCOUNT=0
- for LSTOKEN in $LSOUT
- do
- FCOUNT=`expr $FCOUNT + 1`
- if [ $FCOUNT = 3 ]; then
- SCRIPT_DIR_OWNER=$LSTOKEN
- break
- fi
- done
- echo Owner of ${SCRIPT_DIR} directory is ${SCRIPT_DIR_OWNER}
- if [ ! ${SCRIPT_DIR_OWNER} = "QSYS" ]; then
- echo "Nothing to do because the \"iAdmin POSTINSTALL\" command has not been run."
- exit 0
- fi
- fi
- if [ ! -e ${WLP_INSTALL_DIR}/etc/default.env ]; then
- echo "Error: ${WLP_INSTALL_DIR}/etc/default.env does not exist"
- exit 1
- fi
- . ${WLP_INSTALL_DIR}/etc/default.env
- PRODUCT_EDITION=${com_ibm_websphere_productEdition}
- case "$ACTION" in
- 'DODEFAULT') do_default
- ;;
- 'DLTPRDLOD') delete_prod_load ${APPDATADIR}
- ;;
- 'DLTPRDLIB') delete_prod_lib
- ;;
- 'DLTSHRPRDLIB') delete_shared_prod_lib
- ;;
- *)
- usage
- ;;
- esac
- exit ${ERR_CHK}
|