shell 脚本基于 http 请求实现 tomcat 部署应用的启动、停止、重新加载等操作

复制代码
#!/bin/bash

function printLog() {
  nowTime=$(date "+%Y-%m-%d %H:%M:%S")
  echo "${nowTime} -- $1"
}

# tomcat 访问路径
TOMCAT_URL=http://127.0.0.1:8080
# tomcat 登录用户名
TOMCAT_USER='admin'
# tomcat 登录密码
TOMCAT_PASSWORD='1'
# 操作的应用名称
APP_NAME='host-manager'
# 操作类型,支持 start、stop、reload
OPERATE_TYPE='Reload'

APP_NAME=$1
APP_PATH=$1
OPERATE_TYPE=$2

check=1
if [ "${APP_NAME}" = "" ]; then
  printLog "第一个参数请指定操作的应用名称"
  check=0
fi

if [ "${OPERATE_TYPE}" = "" ]; then
  printLog "第二个参数请指定操作类型,目前支持 start、stop、reload"
  check=0
fi

if [ "${check}" = "0" ]; then
  exit 1
fi

if [ "${APP_NAME:0:1}" != "/" ]; then
  APP_PATH="/${APP_NAME}"
fi

GREP_TEXT=""
if [ "${OPERATE_TYPE}" = "start" ]; then
  GREP_TEXT='<input type="submit" value="Start">'
elif [ "${OPERATE_TYPE}" = "reload" ]; then
  GREP_TEXT='<input type="submit" value="Reload">'
elif [ "${OPERATE_TYPE}" = "stop" ]; then
  GREP_TEXT='<input type="submit" value="Stop">'
fi

if [ "${GREP_TEXT}" = "" ]; then
  printLog "OPERATE_TYPE 配置不合法,当前仅支持 start、stop、reload 操作"
  exit 1
fi

body=$(curl -s -i -u "${TOMCAT_USER}":"${TOMCAT_PASSWORD}" "${TOMCAT_URL}"/manager/html)
cookie=$(echo "${body}" | grep 'Set-Cookie: JSESSIONID=' | awk '{print $2}')
cookie=${cookie:0:-1}

url=$(echo "${body}" | grep "&#47;${APP_PATH:1}&")
if [ "${url}" = "" ]; then
  printLog "不存在应用 ${APP_NAME}"
  exit 1
fi
url=$(echo "${url}" | grep "${GREP_TEXT}" | awk '{print $4}')
if [ "${url}" = "" ]; then
  printLog "应用 ${APP_NAME} 当前不支持 ${OPERATE_TYPE} 操作"
  exit 1
fi
url="${url:8:-2}"
url="${url//&#47;//}"
url="${url//&amp;/&}"
url="${TOMCAT_URL}${url}"

printLog "应用 ${APP_NAME} ${OPERATE_TYPE} 开始"
body=$(curl -s -i -XPOST -u "${TOMCAT_USER}":"${TOMCAT_PASSWORD}" --cookie "${cookie}" $url)
if [ "${body:0:12}" = 'HTTP/1.1 200' ]; then
  printLog "应用 ${APP_NAME} ${OPERATE_TYPE} 结束"
else
  printLog "应用 ${APP_NAME} ${OPERATE_TYPE} 失败"
fi
复制代码

 

posted @   Nihaorz  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示