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

发布时间 2023-04-10 16:50:37作者: Nihaorz
#!/bin/bash

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

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
  echo "[$(date)] -- OPERATE_TYPE 配置不合法,请修改"
  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 "${GREP_TEXT}" | grep "&#47;${APP_PATH:1}&" | awk '{print $4}')
if [ "${url}" = "" ]; then
  echo "[$(date)] -- 应用 ${APP_PATH} 当前不支持 ${OPERATE_TYPE} 操作"
  exit 1
fi
url="${url:8:-2}"
url="${url//&#47;//}"
url="${url//&amp;/&}"
url="${TOMCAT_URL}${url}"
echo "[$(date)] -- 应用 ${APP_PATH} ${OPERATE_TYPE} 开始"
body=$(curl -s -i -XPOST -u "${TOMCAT_USER}":"${TOMCAT_PASSWORD}" --cookie "${cookie}" $url)
if [ "${body:0:12}" = 'HTTP/1.1 200' ]; then
  echo "[$(date)] -- 应用 ${APP_PATH} ${OPERATE_TYPE} 结束"
else
  echo "[$(date)] -- 应用 ${APP_PATH} ${OPERATE_TYPE} 失败"
fi