跳到主要内容

Manage Tomcat Service Use Shell Script

Tomcat 项目管理交互式脚本

  • Install pssh
  • Use Key Login Server Hosts
  • ~/.ssh/config 配置使用 host 名登录服务
  • 指定 Server Group Files 存放位置
#!/bin/bash

# Author Alex LU
# Date 2016-07-20
# Version 1.0

# HostFile
HostDIR=~/.ssh/host/

# war包上传到该目录
# /warfolder

:'
jobs_select (){
STRING=``cat $vmname | grep group
if [ -z "$STRING" ]
then
job_tomcat
else
job2_tomcat
fi
}
'

function HOST()
{
echo ""
echo "############ Host List ###############"
echo "ckgroup:ck01,ck02,ck03,ck04"
echo "sjgroup:sj01,sj02,sj03,sj04"
echo "ddgroup:dd01,dd02,dd03,dd04"
echo "htgroup:ht01,ht02"
echo "othergroup:report,tg"
echo "######################################"
echo ""
echo " Tips: 如果要选择ck01,则输入ck01即可,如果输入ck组,输入ckgroup即可,如果要退出当前脚本输入exit"
echo " Tips: 退回上一步请输入back"
read -p "请输入你的选择:" vmname

case "$vmname" in
ck01|ck02|ck03|ck04|sj01|sj02|sj03|sj04|dd01|dd02|dd03|dd04|report|tg|ht01|ht02)
job_tomcat $vmname
;;
ckgroup|sjgroup|htgroup|ddgroup|othergroup)
job2_tomcat $vmname
;;
exit)
exit 0;
;;
back)
clear
echo ""
echo "Tips: 欢迎使用Tomcat项目服务管理工具,您需要预先安装pssh工具,以及配置好ssh免密登录到服务器"
main
;;
*)
echo "请输入的选择!"
HOST
;;
esac
}

function job_tomcat ()
{
echo ""
echo "############ 动作 ###############"
echo " 1. 查看当前tomcat7状态"
echo " 2. 关闭tomcat7"
echo " 3. 启动tomcat7"
echo " 4. 重启tomcat7"
echo " 5. 获取最近200行日志"
echo " 6. 重新选择主机"
echo " 7. 回到顶层目录"
echo ""
echo "#################################"

read -p "请输入你的选择:" service_tomcat

case $service_tomcat in
1)
pssh -H $vmname -i "ps aux | grep tomcat"
job_tomcat
;;
2)
pssh -H $vmname -i "service tomcat7 stop"
# tips: 下面grep的字符串要和你的tomcat项目名称契合
pssh -H $vmname -i "ps aux | grep tomcat7 | awk '{print $2}' | xargs kill -9 "
# tips: 下面用到的路径为绝对路径,请更改为自己tomcat的目录,也可以在前面增加自定义变量
pssh -H $vmname -i "rm -rf /tomcat7/work/*"
pssh -H $vmname -i "rm -rf /tomcat7/logs/*"
pssh -H $vmname -i "rm -rf /tomcat7/temp/*"
job_tomcat
;;
3)
pssh -H $vmname -i "service tomcat7 start"
job_tomcat
;;
4)
pssh -H $vmname -i "service tomcat7 stop"
# tips: 下面grep的字符串要和你的tomcat项目名称契合
pssh -H $vmname -i "ps aux | grep tomcat7 | awk '{print $2}' | xargs kill -9 "
# tips: 下面用到的路径为绝对路径,请更改为自己tomcat的目录,也可以在前面增加自定义变量
pssh -H $vmname -i "rm -rf /tomcat7/work/*"
pssh -H $vmname -i "rm -rf /tomcat7/logs/*"
pssh -H $vmname -i "rm -rf /tomcat7/temp/*"
sleep 1
pssh -H $vmname -i "service tomcat7 start"
job_tomcat
;;
5)
pssh -H $vmname -i "tail -n 200 /tomcat7/logs/catalina.out"
job_tomcat
;;
6)
echo ""
HOST
;;
7)
clear
echo ""
echo "Tips: 欢迎使用Tomcat项目服务管理工具,您需要预先安装pssh工具,以及配置好ssh免密登录到服务器"
main
;;
*)
echo "请输入正确的选项!"
job_tomcat
;;
esac
}

function job2_tomcat ()
{
echo ""
echo "############ 动作 ###############"
echo " 1. 查看当前tomcat7状态"
echo " 2. 关闭tomcat7"
echo " 3. 启动tomcat7"
echo " 4. 重启tomcat7"
echo " 5. 获取最近200行日志"
echo " 6. 重新选择主机"
echo " 7. 回到顶层目录"
echo ""
echo "################################"

read -p "请输入你的选择:" service_tomcat

case $service_tomcat in
1)
pssh -h $HostDIR/$vmname -i "ps aux | grep tomcat"
job2_tomcat
;;
2)
pssh -h $HostDIR/$vmname -i "service tomcat7 stop"
# tips: 下面grep的字符串要和你的tomcat项目名称契合
pssh -h $HostDIR/$vmname -i "ps aux | grep tomcat7 | awk '{print $2}' | xargs kill -9 "
# tips: 下面用到的路径为绝对路径,请更改为自己tomcat的目录,也可以在前面增加自定义变量
pssh -h $HostDIR/$vmname -i "rm -rf /tomcat7/work/*"
pssh -h $HostDIR/$vmname -i "rm -rf /tomcat7/logs/*"
pssh -h $HostDIR/$vmname -i "rm -rf /tomcat7/temp/*"
job2_tomcat
;;
3)
pssh -h $HostDIR/$vmname -i "service tomcat7 start"
job2_tomcat
;;
4)
pssh -h $HostDIR/$vmname -i "service tomcat7 stop"
# tips: 下面grep的字符串要和你的tomcat项目名称契合
pssh -h $HostDIR/$vmname -i "ps aux | grep tomcat7 | awk '{print $2}' | xargs kill -9 "
# tips: 下面用到的路径为绝对路径,请更改为自己tomcat的目录,也可以在前面增加自定义变量
pssh -h $HostDIR/$vmname -i "rm -rf /tomcat7/work/*"
pssh -h $HostDIR/$vmname -i "rm -rf /tomcat7/logs/*"
pssh -h $HostDIR/$vmname -i "rm -rf /tomcat7/temp/*"
sleep 1
pssh -h $HostDIR/$vmname -i "service tomcat7 start"
job2_tomcat
;;
5)
pssh -h $HostDIR/$vmname -i "tail -n 200 /tomcat7/logs/catalina.out"
job2_tomcat
;;
6)
echo ""
HOST
;;
7)
clear
echo ""
echo "Tips: 欢迎使用Tomcat项目服务管理工具,您需要预先安装pssh工具,以及配置好ssh免密登录到服务器"
main
;;
*)
echo "请输入正确的选项!"
job_tomcat
;;
esac
}

function HOST2()
{
echo ""
echo "############ Host List ###############"
echo "ckgroup:ck01,ck02,ck03,ck04"
echo "sjgroup:sj01,sj02,sj03,sj04"
echo "ddgroup:dd01,dd02,dd03,dd04"
echo "htgroup:ht01,ht02"
echo "othergroup:report,tg"
echo "######################################"
echo ""
# 确认是否所有项目包发布后立即启动
echo -e "\033[7m 更新订单服务器的war包时,会自动启动tomcat程序,为了释放war包,修改order.no,请设置war包内order.no=0 ,其它服务器tomcat不会自启动,请使用命令操作 \033[0m"
echo " Tips: 如果要选择ck01,则输入ck01即可,如果输入ck组,输入ckgroup即可,如果要退出当前脚本输入exit"
echo " Tips: 退回上一步请输入back"
read -p "请输入你的选择:" vmname
case "$vmname" in
ck01|ck02|ck03|ck04|sj01|sj02|sj03|sj04|dd01|dd02|dd03|dd04|report|tg|ht01|ht02)
read -p "请输入war包的名称,例如:dzcx_ck.war :" warname
pscp_tomcat $vmname $warname
;;
ckgroup|sjgroup|htgroup|othergroup)
read -p "请输入war包的名称,例如:dzcx_ck.war :" warname
pscp2_tomcat $vmname $warname
;;
ddgroup)
read -p "请输入war包的名称,例如:dzcx_ck.war :" warname
pscp3_tomcat $vmname $warname
;;
exit)
exit 0;
;;
back)
clear
echo ""
echo "Tips: 欢迎使用Tomcat项目服务管理工具,您需要预先安装pssh工具,以及配置好ssh免密登录到服务器"
main
;;
*)
echo "请输入的选择!"
HOST
;;
esac
}

function pscp_tomcat ()
{
# single host
pscp.pssh -H $vmname /warfolder/"$warname" /tomcat7/webapps/
HOST2
}

function pscp2_tomcat ()
{
# group
pscp.pssh -h $HostDIR/$vmname /warfolder/"$warname" /tomcat7/webapps/
HOST2
}

function pscp3_tomcat ()
{
# group dd 因为订单需要修改服务器编号
pscp.pssh -h $HostDIR/$vmname /warfolder/"$warname" /tomcat7/webapps/
pssh -h $vmname -i "service tomcat7 start"
sleep 10
pssh -H dd02 "sed -i 's/order.no=0/order.no=1/g' /tomcat7/webapps/dzcx_socket/WEB-INF/classes/base.properties"
pssh -H dd03 "sed -i 's/order.no=0/order.no=2/g' /tomcat7/webapps/dzcx_socket/WEB-INF/classes/base.properties"
pssh -H dd04 "sed -i 's/order.no=0/order.no=3/g' /tomcat7/webapps/dzcx_socket/WEB-INF/classes/base.properties"
HOST2
}

function main ()
{
echo ""
echo "######################################"
echo ""
echo "# 1. 更新war包"
echo "# 2. 管理tomcat7"
echo "# 3. 管理mysql"
echo "# 4. 管理redis"
echo "# 5. 同步服务器时间"
echo "# 6. 清理当前屏幕"
echo "# 7. 退出"
echo ""
echo "######################################"

read -p "请输入你的选择:" num

case "$num" in
1)
HOST2
;;
2)
HOST
;;
3)
echo "该功能暂未开放"
;;
4)
echo "该功能暂未开放"
;;
5)
pssh -h $HostDIR/allhost -i "service ntpd restart"
;;
6)
clear
echo ""
echo "Tips: 欢迎使用Tomcat项目服务管理工具,您需要预先安装pssh工具,以及配置好ssh免密登录到服务器"
main
;;
7)
exit 0
;;
*)
echo "请输入正确的数值!"
main
;;
esac

}

# --------------------------------- main -------------------------------------------------

clear

echo ""
echo "Tips: 欢迎使用Tomcat项目服务管理工具,您需要预先安装pssh工具,以及配置好ssh免密登录到服务器"
command -v pssh > /dev/null 2>&1

if [ $? -eq 0 ]
then
main
else
echo -e "\033[07m"
echo -e "系统检测到您还没安装pssh,请预先安装pssh"
echo "yum install -y epel-release"
echo "yum install -y pssh"
echo "安装成功请重新运行此脚本"
echo -e "\033[0m"

fi