diff options
Diffstat (limited to 'aai-traversal/src/main/scripts/install')
-rw-r--r-- | aai-traversal/src/main/scripts/install/instutils.sh | 725 |
1 files changed, 0 insertions, 725 deletions
diff --git a/aai-traversal/src/main/scripts/install/instutils.sh b/aai-traversal/src/main/scripts/install/instutils.sh deleted file mode 100644 index ab94a9c..0000000 --- a/aai-traversal/src/main/scripts/install/instutils.sh +++ /dev/null @@ -1,725 +0,0 @@ -#!/bin/ksh -# -# ============LICENSE_START======================================================= -# org.onap.aai -# ================================================================================ -# Copyright © 2017 AT&T Intellectual Property. All rights reserved. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ============LICENSE_END========================================================= -# -# ECOMP is a trademark and service mark of AT&T Intellectual Property. -# - -ECHO=${ECHO:-echo} - -q_flags="-qq -k$$" - -show_install=${PROJECT_HOME}/install/show_install - -############################################################################ -# checkgroup groupname gid -# checks if group is already in /etc/group and if it has the right gid -# if it's not there, it adds it -# gid can be DC if you don't care -############################################################################ -checkgroup () { - ecode=0 - OFILE=/tmp/group.$$ - getent group "$1" > $OFILE - if [ $? -eq 0 ] - then - CHECKGID=$( grep "^$1:" $OFILE | cut -f3 -d: 2>/dev/null ) - CHECKGROUPPRESENT=$( grep "^$1:" $OFILE | cut -f1 -d: 2>/dev/null ) - CHECKGROUP=$( grep ":$2:" $OFILE | cut -f1 -d: 2>/dev/null ) - fi - if [ "${CHECKGID}" = "" -a "${CHECKGROUP}" = "" ] - then - ${ECHO} "Adding $1 group ..." - if [ "$2" = "DC" ] - then - groupadd $1 - else - groupadd -g $2 $1 - fi - if [ "$?" != "0" ] - then - ${ECHO} "Cannot add group $1, continuing..." - ecode=1 - fi - else - if [ "${CHECKGROUPPRESENT}" = "$1" ] - then - if [ "$2" != "DC" ] - then - if [ "${CHECKGID}" != "$2" ] - then - ${ECHO} "ERROR: $1 group added but with wrong gid \"${CHECKGID}\"; should be $2" - ecode=1 - fi - if [ "${CHECKGROUP}" != "$1" ] - then - ${ECHO} "ERROR: wrong group \"${CHECKGROUP}\" for gid $2, group should be $1" - ecode=1 - fi - else - ${ECHO} "$1 group has already been added" - fi - fi - fi - rm -f $OFILE - return ${ecode} -} - -############################################################################ -# checkuser username uid homedir shell group -# checks if the username/uid/homedir/shell combo is already in /etc/passwd -# if not, it adds it -# if the login is there and the uid belongs to a different user, it errors -# if the login is there and the shell is not correct, it errors -# uid may be DC for don't care -############################################################################ -checkuser () { - ecode=0 - OFILE=/tmp/user.$$ - getent passwd $1 > $OFILE - if [ $? -eq 0 ] - then - CHECKUID=$( grep "^$1:" $OFILE | cut -f3 -d: 2>/dev/null ) - CHECKLOGIN=$( grep ":x:$2:" $OFILE | cut -f1 -d: 2>/dev/null ) - CHECKLOGINPRESENT=$( grep "^$1:" $OFILE | cut -f1 -d: 2>/dev/null ) - CHECKSHELL=$( grep "^$1:" $OFILE | cut -f7 -d: 2>/dev/null ) - CHECKHOME=$( grep "^$1:" $OFILE | cut -f6 -d: 2>/dev/null ) - fi - - if [ ! -d $3 ] - then - mkdir -p $3 - if [ "$?" != "0" ] - then - ${ECHO} "mkdir -p $3 failed" - ecode=1 - fi - chmod -R 755 $3 - fi - if [ "${CHECKUID}" = "" -a "${CHECKLOGIN}" = "" ] - then - ${ECHO} "Adding $1 login ..." - if [ "$2" = "DC" ] - then - useradd -g $5 -d $3 -s $4 -c "$1 LOGIN" -m $1 - else - useradd -u $2 -g $5 -d $3 -s $4 -c "$1 LOGIN" -m $1 - fi - if [ "$?" != "0" ] - then - ${ECHO} "Cannot add $1 login, continuing..." - ecode=1 - fi - elif [ "${CHECKLOGINPRESENT}" = "$1" -a "$2" = "DC" -a "${CHECKSHELL}" = "$4" -a "${CHECKHOME}" = "$3" ] - then - ${ECHO} "The '$1' login has already been added to system with UID ${CHECKUID}." - - elif [ "${CHECKUID}" = "$2" -a "${CHECKLOGIN}" = "$1" -a "${CHECKSHELL}" = "$4" -a "${CHECKHOME}" = "$3" ] - then - ${ECHO} "The '$1' login has already been added to system." - else - if [ "$2" != "DC" -a "${CHECKUID}" != "$2" ] - then - ${ECHO} "ERROR: $1 login added but with wrong uid \"${CHECKUID}\"; should be $2" - ecode=1 - fi - if [ "$2" != "DC" -a "${CHECKLOGIN}" != "$1" ] - then - ${ECHO} "ERROR: wrong login \"${CHECKLOGIN}\" for uid $2, login should be $1" - ecode=1 - fi - if [ "${CHECKHOME}" != "$3" ] - then - ${ECHO} "ERROR: wrong home directory \"${CHECKHOME}\" for login $1, should be $3" - ecode=1 - fi - if [ "${CHECKSHELL}" != "$4" ] - then - ${ECHO} "ERROR: $1 login not set up with $4" - ecode=1 - fi - fi - rm -f $OFILE - return ${ecode} -} - -############################################################################ -# checkhome username homedir action -# if the user doesn't exist, it errors -# checks if the username has homedir as its home directory -# if not and action is null, it modifies it -# if not and action is mod, it modifies it -# if not and action is error, it errors -############################################################################ -checkhome () { - ecode=0 - OFILE=/tmp/user.$$ - getent passwd $1 > $OFILE - if [ $? -eq 0 ] - then - CHECKUID=$( grep "^$1:" $OFILE | cut -f3 -d: 2>/dev/null ) - CHECKGID=$( grep "^$1:" $OFILE | cut -f4 -d: 2>/dev/null ) - CHECKHOME=$( grep "^$1:" $OFILE | cut -f6 -d: 2>/dev/null ) - - if [ "${CHECKHOME}" = "$2" ] - then - if [ ! -d $2 ] - then - mkdir -p $2 - if [ "$?" != "0" ] - then - ${ECHO} "mkdir -p $2 failed" - ecode=1 - fi - chown ${CHECKUID}:${CHECKGID} $2 - chmod -R 755 $2 - fi - else - # modify the user to set the new home dir and move any current home dir to there - usermod -d $2 -m $1 - if [ "$?" != "0" ] - then - ${ECHO} "usermod -d $2 -m $1 failed" - ecode=1 - fi - fi - else - ${ECHO} "user $1 doesn't exist" - ecode=1 - fi - - rm -f $OFILE - return ${ecode} -} - -################################################################## -#checkloginsforpwds checks /etc/shadow for logins without passwords -# the first argument is a list of logins to check -################################################################## -checkloginsforpwds () { - for i in $1 - do - CHECK_LOGIN=$( grep "^${i}:" /etc/shadow | grep "!!" ) - if [ "${CHECK_LOGIN}" != "" ] - then - NOPWD="${NOPWD} ${i}" - fi - done - - if [ "${NOPWD}" != "" ] - then - ${ECHO} "" - ${ECHO} "REMINDER: The following logins must have a passwords assigned to them.\n" - ${ECHO} "##############################################################" - ${ECHO} " ${NOPWD} " - ${ECHO} "##############################################################" - ${ECHO} "" - ${ECHO} " This must be done by executing the following command:" - ${ECHO} "" - ${ECHO} " $ passwd <login>" - ${ECHO} "" - ${ECHO} " After typing the \"passwd\" command you will be prompted for" - ${ECHO} " the password for the login." - ${ECHO} "" - fi -} - -################################################################## -# checkassignpasswords checks /etc/shadow for logins without passwords -# and then asks the user to assign one -# the first argument is a list of logins to check -################################################################## -checkassignpasswords () { - for i in $1 - do - CHECK_LOGIN=$( grep "^${i}:" /etc/shadow | grep LK ) - if [ "${CHECK_LOGIN}" != "" ] - then - ${ECHO} "Please assign a password for the '${i}' login" - passwd ${i} - ${ECHO} - fi - done -} - -############################################################################ -# copywithperms origfile destfile owner group perms [save suffix] -# copies origfile to destfile, giving destfile ownership and permssions -# from owner, group, and perms. If the sixth argument is "save", the -# original is saved in the same place with the seventh argument as the -# suffix. If the seventh arg is null, $$ is used -############################################################################ -copywithperms () { - SAVE=0 - ECODE=0 - if [ "$6" = "save" -a -f "$2" ] - then - if [ "$7" = "" ] - then - cp $2 $2.$$ - else - cp $2 $2.$7 - fi - fi - if [ -f $1 ] - then - cp $1 $2 - ECODE=$? - chown ${3}:${4} $2 - chmod $5 $2 - else - ${ECHO} "$1 is not a file. No copy done!" - fi - return ${ECODE} -} - -############################################################################ -# mkdirwithperms dirname owner group perms ifExist -# makes directory dirname , giving dirname ownership and permssions -# from owner, group, and perms. -# perms can be DC if you don't care -# ifExist can be rm, error, dontcreate -############################################################################ -mkdirwithperms () { - ECODE=0 - if [ -f $1 ] - then - ECODE=1 - ${ECHO} "$1 exists but is a file. No mkdir done!" - elif [ -d $1 ] - then - if [ "$5" = "rm" ] - then - rm -rf $1 - mkdir -p $1 - if [ "$?" != "0" ] - then - ${ECHO} "mkdir -p $1 failed" - ECODE=1 - fi - elif [ "$5" = "error" ] - then - ECODE=1 - ${ECHO} "$1 is a directory. No mkdir done!" - elif [ "$5" != "dontcreate" ] - then - mkdir -p $1 - if [ "$?" != "0" ] - then - ${ECHO} "mkdir -p $1 failed" - ECODE=1 - fi - fi - else - mkdir -p $1 - if [ "$?" != "0" ] - then - ${ECHO} "mkdir -p $1 failed" - ECODE=1 - fi - fi - if [ "${ECODE}" = "0" ] - then - chown ${2}:${3} $1 - if [ "$4" != "DC" ] - then - chmod $4 $1 - fi - fi - return ${ECODE} -} - - -############################################################################ -# chownwithperms owner group file mode -# changes the ownership and mode for the specified file -############################################################################ -chownwithperms () { - chown ${1}:${2} $3 - chmod $4 $3 -} - -verifywhosrunning () { - userid=$( id | cut -f2 -d"(" | cut -f1 -d")" ) - if [ "${userid}" != "$1" ] - then - ${ECHO} "You must be $1 to run $0" - exit 1 - fi -} - -replaceline() { - - name=$1 - value=$2 - file=$3 - - if [ -z "${file}" ] - then - ${ECHO} "replaceline: ERROR: insufficient arguments: $1 $2" >&2 - return 1 - fi - - if [ -n "$4" ] - then - ${ECHO} "replaceline: ERROR: too many arguments: $1 $2 $3 $4" >&2 - return 1 - fi - - if [ -f ${file} ] - then - grep -v "^${name}=" ${file} > ${file}.$$ - ${ECHO} "${name}=${value}" >> ${file}.$$ - mv -f ${file}.$$ ${file} - else - ${ECHO} "${name}=${value}" > ${file} - fi -} - -replaceline_with_quotes() { - - name=$1 - value=$2 - file=$3 - - if [ -z "${file}" ] - then - ${ECHO} "replaceline: ERROR: insufficient arguments: $1 $2" >&2 - return 1 - fi - - if [ -n "$4" ] - then - ${ECHO} "replaceline: ERROR: too many arguments: $1 $2 $3 $4" >&2 - return 1 - fi - - if [ -f ${file} ] - then - grep -v "^${name}=" ${file} > ${file}.$$ - ${ECHO} "${name}=\"${value}\"" >> ${file}.$$ - mv -f ${file}.$$ ${file} - else - ${ECHO} "${name}=\"${value}\"" > ${file} - fi -} - -# this deleteline will not actually delete the entry -# but only delete the value leaving the name= -# when siteconf.pl went from Boilerplate to Fillin, -# we changed this because Fillin can handle null values. - -deleteline() { - - name=$1 - file=$2 - - if [ -z "${file}" ] - then - ${ECHO} "deleteline: ERROR: insufficient arguments" >&2 - return 1 - fi - - if [ -f ${file} ] - then - cp ${file} ${file}.$$ - lno=$( grep -n "^${name}=" ${file} | cut -d: -f1 ) - if [ "${lno}" != "" ] - then - sed "${lno}d" ${file} > ${file}.$$ - fi - ${ECHO} "${name}=" >> ${file}.$$ - mv -f ${file}.$$ ${file} - else - ${ECHO} "${name}=" > ${file} - fi -} - -# dropline will drop the line from the file -# unlike the deleteline function above - -dropline() { - - name=$1 - file=$2 - - if [ -z "${file}" ] - then - ${ECHO} "dropline: ERROR: insufficient arguments" >&2 - return 1 - fi - - if [ -f ${file} ] - then - grep -v "^${name}=" ${file} > ${file}.$$ - mv -f ${file}.$$ ${file} - fi -} - -pause_install() { - - if [ "${Pause}" = "1" ] - then - if ${chkyn} -y "Continue with ${Itype}?" - then - return 0 - else - ${ECHO} "${PNAME}: quitting" >&2 - exit 1 - fi - fi -} - -get_ITYPE() { - ITYPE=$( ${chkyn} -fer ${q_flags} -h\? ${ITYPE:+-D"${ITYPE}"} -H \ -" If you are doing a fresh install, answer 'I' or answer 'U' for upgrade." \ -"Is this a fresh 'install' or 'upgrade' (I or U):${ITYPE:+ [${ITYPE}]}" \ - '^[IU]$' \ -'*** ERROR *** Entry must be I or U.' ) -} - - -### -# Change an /etc/group entry to allow a give user to change group into it. -# arg1 = comma-sep group list (e.g., sylantro,other) -# arg2 = user -### -addUserToGroup() -{ - if [ -z "$1" -o -z "$2" ] - then - ${ECHO} "addUserToGroup failed, need two args, group and user" - return 1 - else - usermod -G $1 $2 - fi - return 0 -} - -################### BACKUP AND RESTORE METHODS ######################## -################### VARIABLES ########################## -################### VARIABLES ########################## -################### VARIABLES ########################## -################### VARIABLES ########################## - -NO_FILE_INDICATOR="__NO_PREVIOUS_FILE__" -SAVE_SUFFIX=${Project}save - -################### SUBROUTINES ########################## -################### SUBROUTINES ########################## -################### SUBROUTINES ########################## -################### SUBROUTINES ########################## -################### SUBROUTINES ########################## - -############################################################################## -# Purpose: make a backup copy of a file in such a way that the backup -# won't be lost by re-running your script PLUS give you a predictable name -# for the most recent back up to use when you roll back. -# -# Input: -# - Arg1 = file to back up -# -# Requirement: -# - Remove $1.save before calling this function or else a copy won't be made. -# - Make sure to set the value of env value TODAY to use as a suffix. -# -# Description: -# Copy $1 to $1.${SAVE_SUFFIX}.${TODAY}, then link that to $1.save. -# -############################################################################## -make_backup_copy () -{ - if [ -z "${TODAY}" ] - then - ${ECHO} "make_backup_copy - TODAY variable is unset" >&2 - return 1 - fi - - if [ -f $1.${SAVE_SUFFIX}.${TODAY} -a -h $1.save ] - then - ${ECHO} "Note: backup already exists for $1" - else - # if existing file doesn't exist, set up for later delete by rollback - if [ ! -f $1 -a ! -h $1 ] - then - ${ECHO} ${NO_FILE_INDICATOR} > $1 - fi - cp -p $1 $1.${SAVE_SUFFIX}.${TODAY} - ln -s $1.${SAVE_SUFFIX}.${TODAY} $1.save - fi -} - -################################################################################ -# Purpose: Find the actual file that belongs to $1, which can be a symbolic -# link. -# -# Input: -# - Arg1 = path to file or link -# - Arg2 = true if you want _SRCFILE to be null if no actual file is -# found. If Arg2 is NOT true, then _SRCFILE is set to Arg1. -# -# Side Effect: -# Sets value of _SRCFILE variable -################################################################################ -find_source_file () -{ - if [ -z "$1" ] - then - ${ECHO} "find_source_file - needs at least one argument" >&2 - return 1 - fi - - ls -l $1 > /tmp/tls$$ - cat /tmp/tls$$ | sed 's/ */ /g' |cut -f11 > /tmp/cuts$$ - _SRCFILE=$( cat /tmp/cuts$$ ) - - if [ "$_SRCFILE" = "" ] - then - if [ "$2" != "true" ] - then - _SRCFILE=$1 - fi - fi - rm -f /tmp/tls$$ /tmp/cuts$$ -} - -####################################################################### -# Purpose: Expands template file using data in COPT variable. -# Diffs expanded template against existing file and installs if different. -# If arg5 = true, sets _config_changes=1 so you know that changes were installed -# -# Makes its own backup copy using make_backup_copy. -# Does install if different using install_if_different. -# -# Input: -# Arg1 = template path without .tmpl extension -# Arg2 = install path -# Arg3 = owner and group (e.g., root:other) -# Arg4 = permissions (e.g., 750) -# Arg5 = true/false, if expanded file is different than installed . -# Set _config_changes to 1 if Arg5 is true. Otherwise, don't touch -# _config_changes -# -# Requirement: set COPT to the value of the -c option to siteconf.pl -# -# Side Effect: sets _config_changes=1 if changes were installed -####################################################################### -install_from_template () -{ - if [ -z "${COPT}" ] - then - ${ECHO} "install_from_template - COPT is unset" >&2 - return 1 - fi - - TMPL=$( basename ${1} ) - OFILE=/tmp/${TMPL} - if [ -f ${1}.tmpl ] - then - - ${PROJECT_HOME}/bin/siteconf.pl -t ${1}.tmpl -c ${COPT} -o ${OFILE} - install_if_different ${OFILE} ${2} ${3} ${4} ${5} - - else - ${ECHO} "install_from_template: ERROR: Missing ${TMPL}.tmpl" >&2 - fi - rm -f ${OFILE} -} - - -####################################################################### -# Purpose: Copies source to destination if the two are different. -# If arg5 = true, sets _config_changes=1 so you know that changes were installed -# -# Makes its own backup copy using make_backup_copy. -# -# Input: -# Arg1 = source path -# Arg2 = install path -# Arg3 = owner and group (e.g., root:other) -# Arg4 = permissions (e.g., 750) -# Arg5 = true/false, if expanded file is different than installed . -# Set _config_changes to 1 if Arg5 is true. Otherwise, don't touch -# _config_changes -# -# Side Effect: sets _config_changes=1 if changes were installed -####################################################################### -install_if_different() -{ - # Take backup before changing. - # Only change if different. - if [ -f ${2} ] - then - diff ${1} ${2} > /dev/null - diffrc=$? - if [ "${diffrc}" != "0" ] - then - ${ECHO} "Installing ${2}" - make_backup_copy ${2} - mv -f ${1} ${2} - chown ${3} ${2} - chmod ${4} ${2} - if [ "${5}" = "true" ] - then - _config_changes=1 - fi - fi - else - # creates backup containing ${NO_FILE_INDICATOR} for rollback removal - make_backup_copy ${2} - mv -f ${1} ${2} - chown ${3} ${2} - chmod ${4} ${2} - if [ "${5}" = "true" ] - then - _config_changes=1 - fi - fi -} -################################################################### -# Purpose: rollback a file whose backup was made with make_backup_copy -# -# Input: -# Arg1 is path of installed file. Subroutine will look for ${1}.save -# Arg2 = true/false, if expanded file is different than installed, -# set _config_changes to 1 if Arg2 is true. Otherwise, don't touch -# _config_changes -# -# Side Effect: sets _config_changes=1 if changes were rolled back -################################################################### -rollback_from_save () -{ - if [ -f ${1}.save -o -h ${1}.save ] - then - find_source_file ${1}.save false - ${ECHO} "rollback_from_save: rolling back to $( basename ${_SRCFILE} )" - grep ${NO_FILE_INDICATOR} ${_SRCFILE} > /dev/null - if [ $? -eq 0 ] - then - rm -f ${_SRCFILE} ${1} - else - mv -f ${_SRCFILE} ${1} - fi - if [ "${2}" = "true" ] - then - _config_changes=1 - fi - rm -f ${1}.save - fi -} |