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 "/${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/////}" url="${url//&/&}" 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)