Files
tms-arch-linux-lts-calamare…/archiso/airootfs/home/smart/SmartOrganizer/common/SmartTMS_S3/upgrade.sh
2025-11-26 16:12:02 +08:00

142 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
SO_PATH="/home/smart/SmartOrganizer"
. ${SO_PATH}/lib.conf
SmartTMS_BASE_PATH="/home/smart/.tms3/repo"
SmartTMS_CONFIG_FILE="${SmartTMS_BASE_PATH}/SmartTMS_Upgrade.conf"
SmartTMS_VERSION_PATH="${SmartTMS_BASE_PATH}/versions"
SmartTMS_BACKUP_PATH="${SmartTMS_BASE_PATH}/backup"
CURRENT_VERSION=${1}
TARGET_VERSION=${2}
DB_NAME="tms_db_s3"
DB_PASSWORD="PythA90ra5"
VERSION_PATH="${SmartTMS_VERSION_PATH}/${TARGET_VERSION}"
BACKUP_PATH="${SmartTMS_BACKUP_PATH}/${CURRENT_VERSION}"
TOMCAT_HOME="/home/smart/.tms3/apache-tomcat-*"
stop_tomcat()
{
pid=`netstat -lntp | grep :8080 | awk '{print $7}' |cut -d'/' -f1`
if [[ ! -z ${pid} ]]; then
kill ${pid}
echo "TOMCAT Stopped!"
fi
}
backup_db()
{
if [[ ! -d ${BACKUP_PATH} ]]; then
mkdir -p ${BACKUP_PATH}
fi
BACKUP_SQL_FILE=${BACKUP_PATH}/${DB_NAME}"_"${CURRENT_VERSION}"_"`date -d today +"%Y%m%d%H%M"`.sql
mysqldump -uroot -p${DB_PASSWORD} --default-character-set=utf8 ${DB_NAME} > ${BACKUP_SQL_FILE}
echo "Backup database to [ ${BACKUP_SQL_FILE} ]"
}
backup_war()
{
if [[ ! -d ${BACKUP_PATH} ]]; then
mkdir -p ${BACKUP_PATH}
fi
\cp ${TOMCAT_HOME}/webapps/*.war ${BACKUP_PATH}/
echo "Backup war ... completed!"
rm -rf ${TOMCAT_HOME}/webapps/SmartTMS*
echo "Remove old version"
}
excute_sql()
{
sqls=$(ls ${VERSION_PATH}/sql)
arr=($(get_version_range "${sqls}"))
for version in ${arr[@]}
do
sql=${VERSION_PATH}/sql/${version}/$(ls ${VERSION_PATH}/sql/${version} | grep sql)
if [[ -f ${sql} ]]; then
echo ">> Execute SQL ${version} ${sql}"
mysql -uroot -p${DB_PASSWORD} ${DB_NAME} -f -s -N < ${sql}
fi
done
}
get_version_range()
{
# filter
source=($1)
result=()
for version in ${source[@]}; do
if [[ `version_compare ${version} ${CURRENT_VERSION}` == 1 ]]; then
result+=("${version}")
fi
done
# sort
for (( i=0; i<${#result[@]}; i++ )); do
for (( j=${#result[@]}-1; j>i; j-- )); do
if [[ `version_compare ${result[j]} ${result[j-1]}` == -1 ]]; then
t=${result[j]}
result[j]=${result[j-1]}
result[j-1]=${t}
fi
done
done
echo ${result[@]}
}
update_war()
{
cp ${VERSION_PATH}/*.war ${TOMCAT_HOME}/webapps/
echo "Copy new version to web directory"
}
start_tomcat()
{
sh ${TOMCAT_HOME}/bin/startup.sh
# echo "TOMCAT Started!"
}
if [[ -z ${CURRENT_VERSION} || -z ${TARGET_VERSION} ]]; then
echo "Usage: CURRENT_VERSION and TARGET_VERSION is necessary!"
exit 2
fi
if [[ $(version_compare ${CURRENT_VERSION} ${TARGET_VERSION}) != -1 ]]; then
echo "No upgrade required!"
exit 2
fi
if [[ ! -f ${VERSION_PATH}/SmartTMS_S3.war ]]; then
rm -rf ${VERSION_PATH}
echo "Has some problem of package file! EXIT!"
exit 2
fi
#version_compare 3.0.12 3.1.12
#kill tomcat
stop_tomcat
sleep 10
#back db
backup_db
sleep 2
#excute sql file
excute_sql
sleep 2
#back war
backup_war
sleep 2
#update war
update_war
sleep 4
#start tomcat
start_tomcat
echo "Done!"