Skip to main content

Script - Test Server .bash_profile

This script needs to be modified for the test server login

vi /etc/skel/.bash_profile

Add or change the following to this

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
. /KIWI/corp/bin/bash_profile
#Uncomment if you want the shell to exit when user exists
exit

Script to be added/created to the $CORPBIN of the server

Edit the following script

vi /KIWI/corp/bin/bash_profile

Add the following

#!/bin/bash
#Type:Utility
#########################################################
# Script:
#
# This is used for logging into a test server
# 
# Created
# Steve Ling
#########################################################
# Revision
#
# 2025-01-26 SFL Initial revision
#
#########################################################
#
# Environment:
#
umask 002
#trap 'echo "Caught Ctrl+C"; exit 0' SIGINT
DBHOST=localhost
SITENAME=$PLANTID #`pwd|cut -d"_" -f2`
MYSQLUSER=kiwisql
MYSQLPASS=800486kiwi
#
# Variables
REVS=/KIWI/rev/map
MREVS=/KIWI/rev/mes
DATASETS=/KIWI/backups
#
# Define colors
RED='\033[1;31m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
BLUE='\033[1;36m'
NC='\033[0m' # No Color
BOLD='\033[1m'
FLASH='\033[5m'
#
# Define log file
LOG_FILE="$0$(date +"%Y%m%d_%H%M%S").log"

# Logging function
log() {
  local message="$1"
  local level="$2" # Optional: INFO, WARNING, ERROR
  local color="$3"

  # Timestamp
  timestamp=$(date +"%Y-%m-%d %H:%M:%S")

  # Log message with level and timestamp
  echo -e "${color}${message}${NC}" | tee -a "$LOG_FILE"
  #echo -e "${color}${message}${NC}" >> "$LOG_FILE"
  echo "[${timestamp}] [${level}] ${message}" | logger
}
#
# Display banner
banner(){
clear
log "=========================================" "INFO" "${GREEN}${BOLD}"
log "|  Welcome to the Test/Dev Environment  |" "INFO" "${GREEN}${BOLD}"
log "|                                       |" "INFO" "${GREEN}${BOLD}"
log "| You are in the server:                |" "INFO" "${GREEN}${BOLD}"
log "  `hostname` " "INFO" "${YELLOW}${BOLD}"
log "=========================================" "INFO" "${GREEN}${BOLD}"
echo ""
}
#
checkVariables() {
if [ ! -d $REVS ];then
        log "$REVS does not exist" "ERROR" "${RED}${BOLD}${FLASH}"
        return 1
fi
#
if [ ! -d $MREVS ];then
        log "$MREVS does not exist" "ERROR" "${RED}${BOLD}${FLASH}"
        return 1
fi
#
if [ ! -d $DATASETS ];then
        log "$DATASETS does not exist" "ERROR" "${RED}${BOLD}${FLASH}"
        return 1
fi
}
#
menu(){
# Main Menu
  echo ""
  log "A) Add Site" "INFO" ${GREEN}${BOLD}
  log "D) Delete Site." "INFO" ${GREEN}${BOLD}
  log "R) Restore Data" "INFO" ${GREEN}${BOLD}
  log "S) Select Site" "INFO" ${GREEN}${BOLD}
  echo ""
  log "X) Exit" "INFO" ${BLUE}${BOLD}
  echo ""
  echo -en ${YELLOW}${BOLD} "Default [S] : "
  read -t 10 choice
  log choice
  case "$choice" in
    "A"|"a")
            log "Chose option A" "INFO" ${YELLOW}${BOLD}
            site_add
    ;;
    "D"|"d")
            log "Chose option D" "INFO" ${YELLOW}${BOLD}
            site_delete
    ;;
    "R"|"r")
            log "Chose option R" "INFO" ${YELLOW}${BOLD}
            data_restore
    ;;
    "S"|"s")
            log "Chose option S" "INFO" ${YELLOW}${BOLD}
            site_select
    ;;
    "X"|"x")
            log "Exiting..." "INFO" ${YELLOW}${BOLD}
            return 0
    ;;
    *)
      site_select
      return 0
    ;;
  esac

}

site_add(){
  clear
  echo -n "Enter site name : "
  read NEW_SITE
  if [ -z "$NEW_SITE" ]
  then
    exit 1
  else
    REVS=$(find /KIWI/rev/map/* -maxdepth 0 -type d| sort)
    PS3="Select MAP revision for $NEW_SITE : "
    select REV in $REVS
    do
      if [ ! -d "/KIWI/rev/site_$NEW_SITE" ]; then
        ln -s $REV /KIWI/rev/site_$NEW_SITE
      fi
      mkdir -p /KIWI/site_$NEW_SITE
      ln -s /KIWI/rev/site_$NEW_SITE/bin /KIWI/site_$NEW_SITE/bin
      ln -s /KIWI/rev/site_$NEW_SITE/progs /KIWI/site_$NEW_SITE/progs
      ln -s /KIWI/rev/site_$NEW_SITE/scp /KIWI/site_$NEW_SITE/scp
      ln -s /KIWI/rev/site_$NEW_SITE/sql /KIWI/site_$NEW_SITE/sql
      break
    done
  install_mysql new
  gen_kidds
  mkdir -p /KIWI/site_$NEW_SITE/site
  cp -ar /KIWI/corp/* /KIWI/site_$NEW_SITE/site
  mkdir -p /KIWI/site_$NEW_SITE/work
  mkdir -p /KIWI/site_$NEW_SITE/work/mdcxmt
  mkdir -p /KIWI/site_$NEW_SITE/work/mdcxmt2
  mkdir -p /KIWI/site_$NEW_SITE/work/ktmedi
  mkdir -p /KIWI/site_$NEW_SITE/work/rssedi
  mkdir -p /KIWI/site_$NEW_SITE/work/sms
  mkdir -p /KIWI/site_$NEW_SITE/work/uleedi
  mkdir -p /KIWI/site_$NEW_SITE/work/xml
  mkdir -p /KIWI/site_$NEW_SITE/work/cscomm
  mkdir -p /KIWI/services/
  cd /KIWI/
  ln -s /KIWI/services java 
  mkdir -p /KIWI/services/sites/$NEW_SITE/
  MREVS=$(find /KIWI/rev/mes/* -maxdepth 0 -type d| sort)
  PS3="Select MES revision for $NEW_SITE : "
  select MREV in $MREVS
  do
    cd /KIWI/services/sites/$NEW_SITE/
    mkdir `basename $MREV`
    ln -s `pwd`/`basename $MREV` current 
    mkdir -p /KIWI/services/sites/$NEW_SITE/current/conf
    mkdir -p /KIWI/services/sites/$NEW_SITE/current/conf/roadgrids
    ln -s /KIWI/services/maps/roadgrids/osm-gh /KIWI/services/sites/$NEW_SITE/current/conf/roadgrids/osm-gh
    mkdir -p /KIWI/services/sites/$NEW_SITE/current/logs
    break
  done
  mkdir -p /KIWI/site_$NEW_SITE/work/cscomm/PO/mmp/
  mkdir -p /KIWI/$NEW_SITE/work/cscomm/POAR/
  mkdir -p /KIWI/$NEW_SITE/work/cscomm/PO/pcp/
  mkdir -p /KIWI/$NEW_SITE/work/cscomm/PO/pop/
  mkdir -p /KIWI/$NEW_SITE/work/cscomm/POAR/
  mkdir -p /KIWI/$NEW_SITE/work/cscomm/PO/rep/
  mkdir -p /KIWI/$NEW_SITE/work/rssedi/fromkiwi/
  mkdir -p /KIWI/$NEW_SITE/work/rssedi/kthr/
  mkdir -p /KIWI/$NEW_SITE/work/rssedi/rssstk/
  mkdir -p /KIWI/$NEW_SITE/work/rssedi/rssuse/
  mkdir -p /KIWI/$NEW_SITE/tssarchive/
  mkdir -p /KIWI/$NEW_SITE/tssexport/
  mkdir -p /KIWI/services/comms/$NEW_SITE/archive/
  mkdir -p /KIWI/services/comms/$NEW_SITE/kiwi_to_host_tss/pickup/
  ln -s /KIWI/$NEW_SITE/tssarchive/ /KIWI/services/comms/$NEW_SITE/archive/
  ln -s /KIWI/$NEW_SITE/tssexport/ /KIWI/services/comms/$NEW_SITE/kiwi_to_host_tss/pickup/
  mkdir -p /KIWI/$NEW_SITE/work/ultdld/archive/
  mkdir -p /KIWI/$NEW_SITE/work/ultdld/
  mkdir -p /KIWI/$NEW_SITE/work/ultunit/

  mysql -e "create database $SITE_classic;"
  fi
  main_menu
}

site_delete(){
  PS3="Choose site : "
  SITES=`ls -d /KIWI/site_* | cut -b 12-`
  clear
  select SITE in $SITES
  do
    echo -n "Are you sure you want to delete /KIWI/site_$SITE (Y/[N])?"
    read choice
      case "$choice" in
      "Y"|"y")
        echo "Deleting the Classic Site Folder"
        find /KIWI/site_$SITE/ -name kwsql -exec mysql -e "drop database $SITE_classic" \;;
        echo "Deleting the Kiwi Site Folder"
        rm -rf /KIWI/site_$SITE
        echo "Deleting the Rev Site Folder"
        rm -f /KIWI/rev/site_$SITE
        echo "Deleting the Jave Site Folder"
        rm -rf /KIWI/services/sites/$SITE
        echo "Deleting the Web Folder"
        rm -rf /KIWI/services/web/$SITE
      ;;
      *)
        main_menu
      ;;
      esac
    break
  done
  main_menu
}

data_restore() {
  PS3="Choose site : "
 SITES=`ls -d /KIWI/site_* | cut -b 12-`
  clear
  select NEW_SITE in $SITES
  do
    echo -n "Are you sure you want to overwrite data for /KIWI/site_$NEW_SITE (Y/[N])?"
    read choice
      case "$choice" in
      "Y"|"y")
        rm -rf /KIWI/site_$SITE/data_$NEW_SITE/*
      
        echo "Select data source : "
        echo ""
        echo "I) ISAM"
        echo "M) MySQL"
        echo ""
        echo -n "Default [I] : "
        read choice
        case "$choice" in
        "M"|"m")
          install_mysql restore
        ;;
        *)
          install_isam restore
        ;;
       esac
       ;;
       *)
         main_menu
       ;;
      esac
    break
  done
  main_menu
}

install_isam() {
  DATASETS=`find /KIWI/backups/*.tar.gz`
  PS3="Select data for $NEW_SITE : "
  select DATASET in $DATASETS
    do
      if [ $1 == "new" ]      
        then
        tar -zxvf $DATASET -C /KIWI/site_$NEW_SITE/
        mv -vf `find /KIWI/site_$NEW_SITE/* -type d -maxdepth 0` /KIWI/site_$NEW_SITE/data_$NEW_SITE
      fi
      if [ $1 == "restore" ]
        then
        find /KIWI/site_$NEW_SITE/ -name kwsql -exec rm {} \;;
        tar -zxvf $DATASET -C /KIWI/site_$NEW_SITE/
        SCR_DIR=`basename \`tar -ztf $DATASET | head -n 1\``
        mv -vf /KIWI/site_$NEW_SITE/$SCR_DIR /KIWI/site_$NEW_SITE/data_$NEW_SITE
      fi
      break
    done  
}

install_mysql() {
   DATASETS=`find /KIWI/backups/*.sql.gz`
   PS3="Select data for $NEW_SITE : "
   select DATASET in $DATASETS
   do 
      if [ $1 == "restore" ]
        then
echo "Checking to ensure the database is not in use" ; sleep 2
          mysqladmin processlist | grep -v _master | egrep -q $DATASET
          if [ $? -eq 1 ] ; then
            mysql -e "drop database `$NEW_SITE_classic`"
echo "Dropping old databases" ; sleep 2
          else
            echo "Destination database is in use. Please try again later."
            read error
          fi
      else
        mkdir -p /KIWI/site_$NEW_SITE/data_$NEW_SITE
      fi  
echo "Creating new database." ; sleep 2
      mysql -e "create database $NEW_SITE_classic"
echo "Restoring database now." ; sleep 2
      zcat $DATASET | grep -v "CREATE DATABASE" | mysql $NEW_SITE_classic
      mysql -e "grant all on $NEW_SITE.* to 'kiwisql'@'localhost' identified by '800486kiwi'"
     break
   done
   if [ ! -d /KIWI/site_$NEW_SITE/data_$NEW_SITE ]; then
        echo "Creating the site Data Folder"
        mkdir -p /KIWI/site_$NEW_SITE/data_$NEW_SITE
   fi
   touch /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
   echo "DATA="${NEW_SITE}"_classic" > /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
   echo "HOST=localhost" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
   echo "INTERFACE=sql" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
   echo "USER=kiwisql" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
   echo "PASSWORD=800486kiwi" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql 
#   echo "PASSWORDX=2o5tP2P8uX4WMp4xsjVnK8DGX5uYrwBz" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql   
   echo "LOG=error" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
   echo "LOGPID=1" >> /KIWI/site_$NEW_SITE/data_$NEW_SITE/kwsql
}

gen_kidds() {
  rm -f /KIWI/site_$NEW_SITE/KIDSENV
  touch /KIWI/site_$NEW_SITE/KIDSENV
  echo "SHELL=/bin/sh" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "TERM=vt100" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KIDSDEBUG=4" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KIDSLOGLEVEL=4" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KIWISITE=$NEW_SITE" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KIWI=/KIWI/site_$NEW_SITE" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "DATA=\$KIWI/data_$NEW_SITE" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "WORK=\$KIWI/work/$LOGNAME" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "BIN=\$KIWI/bin/" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "PROGS=\$KIWI/progs/" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "SCP=\$KIWI/scp/" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "SITEBIN=\$KIWI/site/bin" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "SITEDAT=\$KIWI/site/dat" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "SQL=\$KIWI/sql" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KIDSLOGDIR=\$KIWI/work/$LOGNAME" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KWSQL_COMMONDIR=\$KIWI/data_$NEW_SITE" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "LD_LIBRARY_PATH=\$PROGS" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KWSQL_USER=kiwisql" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KWSQL_PASS=800486kiwi" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "" >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "KIWISEA=.:\$DATA:\$SITEDAT:\$SITEBIN:\$PROGS:\$BIN:\$SCP:\$SQL"  >> /KIWI/site_$NEW_SITE/KIDSENV
  echo "PATH=\$PATH:.:\$SITEDAT:\$SITEBIN:\$CORPBIN:\$PROGS:\$BIN:\$DAT" >> /KIWI/site_$NEW_SITE/KIDSENV
}

setup_counter () {
cd /KIWI
rm /KIWI/counter
ln -s $KIWI/work/mdcxmt counter
}

site_select(){
  if [ -n "${PLANTID}" ]; then
      log "The plant ${PLANTID} was previously selected" "INFO" ${YELLOW}${BOLD}
      KIWI=/KIWI/site_$PLANTID
      EXEC="kiwimenu menu=support"
      export KIWI EXEC PLANTID
      log "Using the folder $KIWI" "INFO" ${BLUE}${BOLD}
      log "Using this menu $EXEC" "INFO" ${BLUE}${BOLD}
      log "Calling stdprofile to set the environment" "INFO" ${BLUE}${BOLD}
      . $KIWI/site/bin/stdprofile
  else
    banner
    PS3="Choose site : "
    SITES=`ls -d /KIWI/site_* | cut -b 12-`
    log "Sites that are currently running:" "INFO" ${YELLOW}${BOLD}
    for j in $SITES
        do
                RUNNING=`ps -ef | grep tomcat | grep -i $j | cut -b 133-136`
                if [ ! "$RUNNING" = "" ];then
                        log "${GREEN}${BOLD}Site ${BLUE}${BOLD}$j ${GREEN}${BOLD}is already running" "INFO" ${BLUE}${BOLD}
                fi
        done
    echo ""
    log "Site Ports" "INFO" ${YELLOW}${BOLD}
    for s in $SITES
        do
                if [ -e /KIWI/services/sites/$s/current/conf/recentparametervalues.properties ];then
                        PORTS=`cat /KIWI/services/sites/$s/current/conf/recentparametervalues.properties|grep OFFSET|cut -d"=" -f2`
                        PORTEXT=`expr 8080 + $PORTS`
                        if [ -n $PORTS ];then
                                log "${GREEN}${BOLD}Site ${BLUE}${BOLD}$s ${GREEN}${BOLD}has a port of ${BLUE}${BOLD}$PORTEXT" "INFO" ${BLUE}${BOLD}
                        fi
                fi
        done
    echo ""
    log "Sites that are available:" "INFO" ${YELLOW}${BOLD}
    select SITE in $SITES
    do
      PLANTID=$SITE
      KIWI=/KIWI/site_$PLANTID
      EXEC="kiwimenu menu=support"
      export KIWI EXEC PLANTID
#      setup_counter
      . $KIWI/site/bin/stdprofile
      break
    done
  fi
}
#
# Execute
. /KIWI/corp/bin/stdprofile
checkVariables
banner
menu
#
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
#
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/KIWI/home/remuser//.sdkman"
[[ -s "/KIWI/home/remuser//.sdkman/bin/sdkman-init.sh" ]] && source "/KIWI/home/remuser//.sdkman/bin/sdkman-init.sh"
#
#exit 0

Script to be added/created to the $CORPBIN of the server

Edit the following script

vi /KIWI/corp/bin/stdprofile

Add the following

#!/bin/bash
umask 002

if [ -r $KIWI/site/KIWIENV ]; then
   COMM_DIR=`cat /KIWI/site_$PLANTID/site/KIWIENV | grep "^COMMSDIR:" | cut -d":" -f2`
   AB_DIR=`cat /KIWI/site_$PLANTID/site/KIWIENV | grep "^HOMEAB:" | cut -d":" -f2`
fi

export KIWIBASE=/KIWI
export KIWI=${KIWI:-/KIWI/site_$PLANTID}
export BACKUPS=${BACKUPS:-${KIWIBASE}/backups}
export BIN=${BIN:-${KIWI}/bin}

# COMMS
export COMMSDIR=${COMMSDIR:-${KIWI}/work/cscomm}
export COMM_DIR=${COMM_DIR:-COMMSDIR}
export COMMS_PRINTER=98

export CORPBIN=${CORPBIN:-${KIWIBASE}/corp/bin}
export CORPDAT=${CORPDAT:-${KIWIBASE}/corp/dat}
export DATA=${DATA:-${KIWI}/data_$PLANTID}
export HOMEAB=${HOMEAB:-${KIWI}/work/mdcxmt}
export HOMECO=${HOMECO:-${KIWI}/work/corrop}
#export HOMECONV=${HOMECONV:-${KIWI}/work/ducker}
export PROGS=${PROGS:-${KIWI}/progs}
export SCP=${SCP:-${KIWI}/scp}
export SQL=${SQL:-${KIWI}/sql}
export UFD=${UFD:-${KIWI}/ufd}
export SITEBIN=${SITEBIN:-${KIWI}/site/bin}
export SITEDAT=${SITEDAT:-${KIWI}/site/dat}
export WORK=${WORK:-${KIWI}/work/${LOGNAME}}
export ftpdir_ord=/mnt/ducker/ordinfo
export ftpdir_seq=/mnt/ducker/corrseq
export ftpdir_ols=/mnt/ducker/ol
export ftpdir_stk=/mnt/ducker/pidnumber
export ftpdir_load=/mnt/ducker/cvm_enter
export DCV_VERSION=3.01
export USESAMBA=1


# VUE Directories
export VUE=${VUE:-${KIWIBASE}/services/sites/$PLANTID/current}
export JCSC=${VUE:-${KIWIBASE}/services/sites/$PLANTID/current}
export VBIN=${VBIN:-${KIWIBASE}/services/sites/$PLANTID/current/bin}
export VLOG=${VLOG:-${KIWIBASE}/services/sites/$PLANTID/current/logs}
export VCONF=${VCONF:-${KIWIBASE}/services/sites/$PLANTID/current/conf}
export KBIN=${KBIN:-${KIWIBASE}/services/etl/kdw/current/kiwiplan/bin}
export KLOG=${KLOG:-${KIWIBASE}/services/etl/kdw/current/kiwiplan/logs}
export KCONF=${KCONF:-${KIWIBASE}/services/etl/kdw/current/kiwiplan/conf}

export PS1=$PS1\n"[\u@\h:$PLANTID \W]\\$ "
export KWSQL_COMMONDIR=${KWSQL_COMMONDIR:-${DATA}}
#export LANGUAGE=${LANGUAGE:-{KIWI_LANG}}
export KWSQL_USER=${KWSQL_USER:-kiwisql}
export MYSQL_PWD=${MYSQL_PWD:-800486kiwi}
export EXEC=${EXEC:-""}

# Has to come after the $PROGS definition
export LD_LIBRARY_PATH=${PROGS}

#export HOMELD=${HOMELD:-${KIWI}/work/autotags}
#export HOMECONVM=${HOMECONVM:-${KIWI}/work/minda}
#export HOMECONVS=${HOMECONVS:-${KIWI}/work/mindas}

export KIWISEA=".:$WORK:$HOME:$DATA:$SITEDAT:$SITEBIN:$CORPDAT:$CORPBIN:$BIN:$PROGS:$SCP:$SQL"
export PATH=".:$WORK:$HOME:$SITEBIN:$CORPBIN:$BIN:$PROGS:/bin:/usr/bin:/usr/sbin"
export JAVA_HOME=/usr/lib/jvm/jre-11

if [ -z "${WORK}" ]; then 
  echo "Variable WORK does not exist. WORK: ${WORK}"
  exit
fi

if [ ! -d ${WORK} ]; then
  mkdir -p ${WORK}
  if [ ! -d ${WORK} ]; then
    clear
    echo -e "ERROR: Cannot create work directory : ${WORK}"
    echo -e "Press <Enter> to continue ... \c"
    read key
    exit 1
  fi
fi

cd $WORK

if [ -z "${EXEC}" ]; then
  exit
else
  ${EXEC}
fi