#!/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!"