Bash Shell-通用项目升级脚本

#!/bin/bash

################################################################################
# Filename : upgrade_project.sh
# Summary  : 项目升级脚本
# License  : GPL
# Version  : 1.0
# Author   : Jet Bi
# Email    : 1207501666@qq.com
# Date     : 2016/08/08
# Note     :
#    1.需要项目支持svn升级方式,并装有svn
#    2.需要restart_tomcat.sh存在
#    3.使用说明
#        升级:./upgrade_project.sh -p 项目路径 -t Tomcat路径
#        回滚:./upgrade_project.sh -r 版本号 -p 项目路径 -t Tomcat路径
################################################################################

project_path=""                                          # 项目路径
project_version=""                                       # 项目版本
tomcat_path=""                                           # Tomcat路径
restart_script="/local/script/restart_tomcat.sh"         # 重启脚本路径
log_file="/local/script/logs/upgrade.log"                # 日志文件路径

# 获取参数,并给变量赋值
while getopts ‘p:r:t:‘ OPT; do
    case ${OPT} in
      p)
        project_path=${OPTARG}
        ;;
      r)
        project_version=${OPTARG}
        ;;
      t)
        tomcat_path=${OPTARG}
        ;;
    esac
done

# 检查是否设置了项目路径和Tomcat路径
echo ${project_path:?"-p Option:Missing Project Path"} > /dev/null
echo ${tomcat_path:?"-t Option:Missing Tomcat Path"} > /dev/null

# 查看是否有Tomcat重启脚本
if [ ! -e ${restart_script} ]; then
    echo "Can‘t find /local/script/restart_tomcat.sh"
    exit 1
fi

# 查看是否有执行脚本的权限
if [ ! -x ${restart_script} ]; then
    chmod u+x ${restart_script}
fi

# 判断项目目录是否合法
if [[ ! -d ${project_path} ]]; then
    echo "${project_path} is not a directory!"
    exit 2
fi

# 查看是否存在日志目录,不存在创建
if [[ ! -e $(dirname ${log_file}) ]]; then
    echo "No directory of upgrade.log: $(dirname ${log_file})"
    mkdir $(dirname ${log_file})
    # exit 3
fi

# 开始升级
echo ---------------------------------------------------------------------------->> ${log_file}
echo "upgrade_title:$(date +%Y-%m-%d" "%H:%M:%S) svn up ${project_path}" >> ${log_file}
echo -e "upgrade_content:\c" >> ${log_file}
if [ ${project_version} ]; then
    svn up -r ${OPTARG} ${project_path} >> ${log_file} 2>&1 && ${restart_script} ${tomcat_path}
else
    svn up ${project_path} >> ${log_file} 2>&1 && ${restart_script} ${tomcat_path}
fi
echo ---------------------------------------------------------------------------->> ${log_file}
exit 0
时间: 2024-10-13 19:54:43

Bash Shell-通用项目升级脚本的相关文章

用Shell编写项目发布脚本

1.首先在github上创建一个测试用的仓库 2.本地编写一个可以运行的测试项目,上传至github 3.链接服务器,编写脚本如下:注意:编写前需要在服务器上安装git和maven 执行build_code方法,从github上克隆下新上传的项目 进入到项目目录下,执行maven命令打包 进入到tomcat目录下,删除Root文件夹和Root.war将项目打好的war包从指定目录拷贝到tomcat的webapps目录下重命名为ROOT.war进入tomcat /bin目录下重启tomcat 4.

一个开源项目中用到的bash shell脚本

请看系统鸟瞰图: 因为笔者所在的地方并无可用的宽带和Wifi,所以暂且只能采用上图中的联网方法,使用ssh走手机GPRS流量的方法进行远程操作云风典藏官网的服务器,以完成所有任务.  关于云风典藏的更多信息,请看文章<四个月的隐居和一个新的开源项目——云风典藏>. 第一步:SSH安全设置  服务器现在由我们全部负责,远程登录的安全为重中之重.  1.创建一普通用户,以后只使用此用户来远程登录系统:  2.修改root密码:  3.修改sshd的配置: 1 #vim sshd_config fi

shell通用脚本启动

Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please change these parameters according to your real env. # set Java Home: Remember that dolphin only supports JDK8! JAVA_HOME=/usr/java/jdk1.8.0_162 # applicat

bash shell学习 01(配置和启动脚本)

bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls -la *sh 一. bash shell的配置变量可分为自定义变量和环境变量他们作用范围不同set 可以查看所有变量set|more 查看 enter一行一行查看set|less enter换行 pagedown换页 q退出 env只能查看环境变量 bash shell的设置方式1.通过自定义变

8.15_Linux之bash shell脚本编程入门篇(二)以及文件查找和压缩的使用

bash shell脚本编程入门篇(二) read命令的使用 作用: 使用read来把输入值分配给一个或多个shell变量: -p指定要显示的提示 -t TIMEOUT read从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量 EX.read -p "Enter a filename:" FILE 条件选择之if的使用 if的作用:选择执行(注意:if语句可嵌套) 单分支 if 判断条件;then 条件为真的分支代码 fi EX.单分支案例 双分支 if

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo

系统管理中 bash shell 脚本常用方法总结

FROM: http://www.cnblogs.com/hunterfu/archive/2010/02/23/1672129.html 在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则. 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符 ,不会作变量的引用,直接输出字符窜.请看如下例子: [[email protec

BASH SHELL 脚本基础

什么是shell     Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应.            shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用.用户在提示符下输入的命令都

Bash Shell脚本编程笔记总结(一)

本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变量找到外部命令:把命令提交给内核启动为进程: 编程环境: 流程控制语句: 顺序执行: 循环执行: 选择执行: 条件测试:真.假 $? 命令的状态结果: 0: 真 1-255: 假 过程式的编程语言的元素:变量.流程.函数.数组 变量:局部变量.本地变量.环境变量.位置参数变量.特殊变量 变量: 数值