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