Skip to main content

Script - Test Server .bash_profile

This scrip that can be used for the test server login

.bash_profile

Script

#!/bin/bash
#Type:Utility
#########################################################
# Script:
#
# This is to import data from the datadump script
# 
# 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
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