自定义公共bash脚本文件/usr/local/scripts/pub/functions
##Log the memseges to facility
Loging (){
if [ -z $LOGFILE ];then
[ ! -d /var/log/scripts ] && mkdir -p /var/log/scripts
LOGFILE=/var/log/scripts/`basename $0`.log
fi
if [
"$1"=
"-s" ];then
echo
"`date +"%G-%m-%d %H:%M:%S
"` $2" | tee -a $LOGFILE &&
return 0
fi
echo
"`date +"%G-%m-%d %H:%M:%S
"` $1" >> $LOGFILE
}
##Upload file to ftp servers
#You must Define variables needed,eg:
# FTPSERVER=192.168.80.220
# FTPLOGIN=backup
# FTPASSWORD=hc360bak
# FTP_SUBDIR=$1
# CMD_LIST=( ls
"lcd $1" )
ftp_f (){
#SUBDIR=$FTP_SUBDIR
if [ -z $CMD_LIST ];then
Loging -s
"WARNING:The CMD_LIST is null,and nothing can be excuted."
fi
[ -z $FTPSERVER ] && Loging -s "WARNING:The FTPSERVER is null,and the ftp server mybe not login."
[ -z $FTPLOGIN ] && Loging -s
"WARNING:The FTPLOGIN is null,and the ftp server mybe not login."
[ -z $FTPPASSWORD ] && Loging -s
"WARNING:The FTPPASSWORD is null,and the ftp server mybe not login."
echo
"machine $FTPSERVER login $FTPLOGIN password \"$FTPPASSWORD\"" >~/.netrc
chmod 600 ~/.netrc
#Create command list file
i=0
while [ $i -lt ${#CMD_LIST[*]} ]
do
echo
"${CMD_LIST[${i}]}" >>~/.cmd_list
let i=$i+1
done
[ $? -eq 0 ] && Loging "INFO:Create comand file \"cmd_list\" is successful."
#ensure ftp can be closed
echo
"bye" >>~/.cmd_list
ftp $FTPSERVER <~/.cmd_list
if [ $? -eq 0 ];then
Loging
"INFO:Exec command as \"cmd_list\" is complete."
else
Loging
"ERROR:Upload files to FTP is failure!" &&
return 1
fi
#clean temp file
#rm -rf ~/.netrc
rm -rf ~/.cmd_list
return 0
#!/bin/sh
if [ ! -f /usr/local/scripts/pub/functions ];then
echo
"ERROR:/usr/local/scripts/pub/functions is not exist,and exit!" && exit 1
fi
. /usr/local/scripts/pub/functions
## initcial scipts variables
init_v(){
local PROJECT=
if [ -z $PROFILE ];then
PROFILE=/etc/profile.d/deploy.sh
fi
if [ -z $1 ];then
Loging
"ERROR:Init error for project is not speciafied." &&
return 1
fi
#The $PROFILE
is not exist and create it!
if [ ! -f $PROFILE ];then
echo
"export D_${1}=`date +"%G%m%d
"`:0" >>$PROFILE
fi
#Import the project var
. $PROFILE
# if project is not exist and create var
eval PROJECT=\$D_$1
if [ -z $PROJECT ];then
echo
"export D_${1}=`date +"%G%m%d
"`:0" >>$PROFILE
PROJECT=
"`date +"%G%m%d
"`:0"
fi
#export the var
DATE=`echo $PROJECT|awk -F: '{print $1}'`
COUNT=`echo $PROJECT|awk -F: '{print $2}'`
if [ "$DATE" != `date + "%G%m%d"` ];then
Loging -s
"INFO:The date is expire,and initate date and count."
DATE=`date +
"%G%m%d"`
COUNT=0
fi
export DATE COUNT
}
## Write variable to profile config file
write_v(){
if [ -z $PROFILE ];then
PROFILE=/etc/profile.d/deploy.sh
fi
sed -i /D_${1}/s/=.*/=${DATE}:$COUNT/g $PROFILE
}
##Define help function
help () {
echo -e
"Usage:deploy.sh [command] [project name]\n"
echo -e
"Usage:deploy.sh roll number [project name]"
echo -e
"Command:"
echo -e
"\tdeploy Deploy the project from ftp downloading *.war,and deploying. "
echo -e
"\tdeployb Backup the old project files or dirs,first,And than deploy the war from remote."
echo -e
"\tbackup Backup the old project files or dirs."
echo -e
"\troll:number Roll back the backup files from backup ftp,the number default is last count of backup file"
echo -e
"eg.:"
echo -e
"\tdeploy.sh deploy info"
}
##Download file from remote server.
download_f (){
if [ -z $1 ];then
Loging
"ERROR:Please speciafied argument for download_f func." &&
return 1
fi
local R_PATH=`dirname $1`
local R_FILENAME=`basename $1`
local L_PATH=/tmp
Loging -s "INFO:Begin download project file from remote server."
CMD_LIST=(
"bin"
"cd $R_PATH"
"lcd $L_PATH"
"get $R_FILENAME"
"bye" )
ftp_f
if [ $? -ne 0 ];then
Loging -s
"ERROR:Download $R_FILENAME is failure!" &&
return 1
fi
return 0
}
##Shutdown server
srv_shutd (){
#kill mutipl process of server
for i
in `ps -ef|grep $1|grep -v grep|awk '{print \$2}'`
do
kill -9 $i
done
[ $? -eq 0 ] && Loging
"INFO:Shutdown server is successfull!"
return 0
}
srv_start(){
if [ -z $TOMCAT_HOME ];then
TOMCAT_HOME=/usr/local/tomcat6
fi
#export java envirment variables
. /etc/profile.d/java.sh
##clear server cache files
rm -rf $TOMCAT_HOME/work/*
$TOMCAT_HOME/bin/startup.sh
}
##Backup the old directory
backup_f (){
#define the variables of function
local BACKUP_BASE_PATH=`dirname $1`
local BACKUP_DIR=`basename $1`
local BACKUP_FILE=${BACKUP_DIR}.bak${COUNT}.tar.gz
local EXCLUDE=
local BACKUP_COMMAND=
"tar -C $BACKUP_BASE_PATH -zcvf $BACKUP_FILE $BACKUP_DIR $EXCLUDE"
if [ ! -d $1 -a ! -f $1 ];then
Loging
"ERROR:The $1 directory or file is not exsit! " &&
continue
fi
if [ -z "$BACKUP_COMMAND" ];then
Loging
"ERROR:Backup command is not defined!" &&
return 1
fi
#execute command
echo $BACKUP_COMMAND
$BACKUP_COMMAND 2>&1 >/dev/
null
if [ $? -eq 0 ];then
Loging -s
"INFO: $BACKUP_FILE is made successful!"
else
Loging -s
"ERROR: $BACKUP_FILE is made failure!" &&
return 1
fi
#upload file to remote ftp server
CMD_LIST=(
"mkdir $DATE"
"cd $DATE"
"mkdir backup"
"cd backup"
"put $BACKUP_FILE"
"bye" )
ftp_f
if [ $? -eq 0 ];then
Loging -s
"INFO:Backup $BACKUP_FILE to remote is successful!"
rm -rf $BACKUP_FILE
else
Loging -s
"ERROR:Backup $BACKUP_FILE is failure!" &&
return 1
fi
return 0
}
#Roll backup file from ftp server,usage: roll_f <project> <backup count>
roll_f (){
local PORJECT=$1
local ROLL_COUNT=$2
if [ -z $ROLL_COUNT ];then
let ROLL_COUNT=$COUNT-1
fi
#Download backup files from remote ftp.
download_f $DATE/backup/${PORJECT}.bak$ROLL_COUNT.tar.gz
if [ ! -f /tmp/${PORJECT}.bak$ROLL_COUNT.tar.gz ];then
Loging
"ERROR:Roll back failuer,mybe the /tmp/${PORJECT}.bak$ROLL_COUNT.tar.gz is not exist!"
return 1
fi
rm -rf /tmp/$PORJECT
tar -C /tmp -zxvf /tmp/${PORJECT}.bak$ROLL_COUNT.tar.gz >>/dev/ null
if [ ! -d /tmp/$PORJECT ];then
Loging
"ERROR:The /tmp/$PORJECT is not exsit.Exit!"
return 1
fi
#Shutdown server of tomcat
srv_shutd tomcat
if [ $? -ne 0 ];then
Loging
"ERROR:Shutdown server failure."
return 1
fi
#Clear apps files
rm -rf $APPS_BASE/$PORJECT
rm -rf $APPS_BASE/${PORJECT}.war
mv /tmp/$PORJECT $APPS_BASE/
srv_start
if [ $? -eq 0 ];then
Loging
"INFO:Move roll back files is successfull!"
else
Loging -s
"ERROR:roll back failure!" &&
return 1
fi
}
##Deploy
new files to server
deploy_f (){
local PROJECT=$1
#Download
new files package from remote ftp.
#remove old app file and then download new file
#rm -rf /tmp/$PROJECT.war
download_f $DATE/$PROJECT.war
if [ ! -f /tmp/${PROJECT}.war ];then
Loging
"ERROR:deploy failuer,mybe the /tmp/$PROJECT.war is not exist!"
return 1
fi
srv_shutd tomcat
if [ $? -ne 0 ];then
Loging -s
"ERROR:Shutdown server failure."
return 1
fi
#Clear the project in server
rm -rf $APPS_BASE/$PROJECT
rm -rf $APPS_BASE/$PROJECT.war
mv /tmp/$PROJECT.war $APPS_BASE/
#Start server
srv_start ||
return 1
Loging -s
"INFO:Start server is ok!"
}
set_var () {
##Start scripts
#FTPSERVER=101.251.113.247
#FTPLOGIN=hdong
#FTPPASSWORD=
"ECHwey81"
##MMT ftp authentication
FTPSERVER=101.251.113.247
FTPLOGIN=zhounan
FTPPASSWORD=
"123ZXC,./"
CMD_LIST=( ls "lcd $1" )
PROFILE=/etc/profile.d/deploy.sh
if [ -Z $TOMCAT_HOME ];then
read -t20 -p
"The variable $TOMCAT_HOME is null,Please specify the TOMCAT_HOME path:" TOMCAT_HOME
fi
TOMCAT_HOME=${TOMCAT_HOME:- "/usr/local/tomcat6"}
read -t10 -p "The apps default base path is \$TOMCAT_HOME/webapps,are you sure change it (Y/N):" FG
case $FG in
y|Y|yes|YES|Yes) read -t 30 -p "Please input:" APPS_BASE ;;
*) APPS_BASE=$TOMCAT_HOME/webapps
esac
}
###############################################Debug###############
#######################end#######################################
cd ~
#Initate variables
init_v $2
Loging -s "INFO:Initated variables complete.DATE=$DATE,COUNT=$COUNT."
case $1
in
"deploy")shift
if [ -z $1 ];then
help
fi
#Define variables
set_var
#Start deploy war-file
deploy_f $1
if [ $? -eq 0 ];then
Loging -s
"INFO:Complete depoy successfull!"
fi
;;
"backup") shift
if [ -z $1 ];then
help
fi
#Define variables
set_var
#Start backup old project
backup_f $TOMCAT_HOME/webapps/$1
if [ $? -eq 0 ];then
Loging -s
"INFO:Complete backup old project successfull!"
#Write variables
let COUNT=$COUNT+1
write_v
fi
;;
"deployb")shift
if [ -z $1 ];then
help
fi
#Define variables
set_var
#Start backup old project
backup_f $TOMCAT_HOME/webapps/$1
if [ $? -eq 0 ];then
Loging -s
"INFO:Complete backup old project successfull!"
#Write variables
let COUNT=$COUNT+1
write_v
fi
#Start deploy war-file
deploy_f $1
if [ $? -eq 0 ];then
Loging -s
"INFO:Complete depoy successfull!"
fi
;;
"roll") shift
if [ -z $1 ];then
help
fi
#Define variables
set_var
#Start Roll back from ftp server.
roll_f $1 $2
if [ $? -eq 0 ];then
Loging -s
"INFO:Complete roll back successfull!"
fi
;;
*) help&& exit 1
esac
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
##Upload file to ftp servers
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
ftp_f (){
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
[ -z $FTPSERVER ] && Loging -s "WARNING:The FTPSERVER is null,and the ftp server mybe not login."
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Create command list file
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
[ $? -eq 0 ] && Loging "INFO:Create comand file \"cmd_list\" is successful."
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#ensure ftp can be closed
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
ftp $FTPSERVER <~/.cmd_list
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#clean temp file
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
为了减少重复代码,编写之上两个通用函数,以备调用。下面是deploy.sh脚本。主要是针对tomcat的war包,进行自动备份、下载、更新、回滚等操作。具体看见脚本中help()的输出信息。
/usr/local/scripts/pub/deploy.sh
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ ! -f /usr/local/scripts/pub/functions ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
## initcial scipts variables
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
local PROJECT=
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ -z $PROFILE ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ -z $1 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
# if project is not exist and create var
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#export the var
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ "$DATE" != `date + "%G%m%d"` ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
export DATE COUNT
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
}
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ -z $PROFILE ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
##Define help function
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
##Download file from remote server.
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
local R_PATH=`dirname $1`
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
Loging -s "INFO:Begin download project file from remote server."
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ $? -ne 0 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
##clear server cache files
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
$TOMCAT_HOME/bin/startup.sh
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#define the variables of function
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ ! -d $1 -a ! -f $1 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ -z "$BACKUP_COMMAND" ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#execute command
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ $? -eq 0 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#upload file to remote ftp server
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ $? -eq 0 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
return 0
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
}
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ -z $ROLL_COUNT ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ ! -f /tmp/${PORJECT}.bak$ROLL_COUNT.tar.gz ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
rm -rf /tmp/$PORJECT
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
tar -C /tmp -zxvf /tmp/${PORJECT}.bak$ROLL_COUNT.tar.gz >>/dev/ null
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ ! -d /tmp/$PORJECT ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Shutdown server of tomcat
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Clear apps files
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
rm -rf $APPS_BASE/$PORJECT
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
srv_start
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ $? -eq 0 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
}
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#remove old app file and then download new file
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
srv_shutd tomcat
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Clear the project in server
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
mv /tmp/$PROJECT.war $APPS_BASE/
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Start server
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
##MMT ftp authentication
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
FTPSERVER=101.251.113.247
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
CMD_LIST=( ls "lcd $1" )
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ -Z $TOMCAT_HOME ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
TOMCAT_HOME=${TOMCAT_HOME:- "/usr/local/tomcat6"}
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
read -t10 -p "The apps default base path is \$TOMCAT_HOME/webapps,are you sure change it (Y/N):" FG
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
case $FG in
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
y|Y|yes|YES|Yes) read -t 30 -p "Please input:" APPS_BASE ;;
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
*) APPS_BASE=$TOMCAT_HOME/webapps
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
}
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
###############################################Debug###############
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#######################end#######################################
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Initate variables
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
init_v $2
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
Loging -s "INFO:Initated variables complete.DATE=$DATE,COUNT=$COUNT."
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
#Start deploy war-file
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
if [ $? -eq 0 ];then
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
![InBlock.gif](p_w_picpaths/editer/InBlock.gif)
转载于:https://blog.51cto.com/xinbuq/915275