当前位置: 首页 > backend >正文

Linux——一键部署应用脚本

#!/bin/bash                                                                                                                     # 日志时间戳函数                                                                                                                
log() {                                                                                                                         echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"                                                                                      
}                                                                                                                               
# 配置部分                                                                                                                      
HOST="172.16.223.191"       # 目标机器IP或主机名                                                                                
USER="root"          # SSH用户名                                                                                                
PASSWORD="ChangeMe@123456"      # SSH密码(建议使用密钥认证)                                                                   
TARGET_DIR="/home/application/back"  # 要备份的远程目录                                                                         
LOCAL_JAR_DIR="/home/application/back"     # 本地存放 JAR 的目录                                                                
REMOTE_JAR_DIR="/home/application/back"   # 远程存放 JAR 的目录                                                                 DATE=$(date +%Y%m%d)                                                                                                            
BACKUP_DIR="${TARGET_DIR}_${DATE}"                                                                                              # JAR 数组(需在远程机器上删除的jar包)                                                                                         
JAR_ARRAY=("system/system.jar")                                                                                                 echo "开始部署流程..."                                                                                                          # 1. 使用 ssh 进入目标机器并执行复制和删除操作                                                                                  
echo "正在连接目标机器 ${USER}@${HOST} ..."                                                                                     # 执行远程操作                                                                                                                  
ssh ${USER}@${HOST} << EOF                                                                                                      log() { echo "[\$(date '+%Y-%m-%d %H:%M:%S')] \$*"; }                                                                         IFS=' ' read -r -a JAR_ARRAY <<< "$JAR_ARRAY"                                                                                 echo "开始远程操作"                                                                                                           if [ ! -d "${TARGET_DIR}" ]; then                                                                                             echo "错误:目标目录 ${TARGET_DIR} 不存在"                                                                                  exit 1                                                                                                                      else                                                                                                                          echo "开始备份文件夹"                                                                                                       cp -r ${TARGET_DIR} ${BACKUP_DIR}                                                                                           if [ $? -eq 0 ]; then                                                                                                       echo "文件夹备份成功"                                                                                                     else                                                                                                                        echo "文件夹备份失败"                                                                                                     exit 1                                                                                                                    fi                                                                                                                          echo "删除要部署的jar包"                                                                                                    for jar in "${JAR_ARRAY[@]}"; do                                                                                            rm -rf ${REMOTE_JAR_DIR}/\${jar}                                                                                          if [ $? -eq 0 ]; then                                                                                                     echo "已删除:${REMOTE_JAR_DIR}/\${jar}"                                                                                 else                                                                                                                      echo "未找到或无法删除:${REMOTE_JAR_DIR}/\${jar}"                                                                       fi                                                                                                                        done                                                                                                                        fi                                                                                                                            echo "远程操作完成"                                                                                                           
EOF                                                                                                                             if [ $? -ne 0 ]; then                                                                                                           echo "SSH 命令执行失败,请检查网络或权限配置"                                                                                 exit 1                                                                                                                        
fi                                                                                                                              echo "开始同步jar包..."                                                                                                         
for jar in "${JAR_ARRAY[@]}"; do                                                                                                LOCAL_JAR_PATH="${LOCAL_JAR_DIR}/${jar}"                                                                                      REMOTE_JAR_PATH="${USER}@${HOST}:${REMOTE_JAR_DIR}/${jar}"                                                                    echo "正在同步:${jar}"                                                                                                        scp "${LOCAL_JAR_PATH}" "${REMOTE_JAR_PATH}"                                                                                  if [ $? -eq 0 ]; then                                                                                                         echo "同步成功:${jar}"                                                                                                      else                                                                                                                          echo "同步失败:${jar}"                                                                                                      fi                                                                                                                            
done                                                                                                                            echo "操作完成"
http://www.xdnf.cn/news/6754.html

相关文章:

  • 方法区与元空间解析
  • 软件架构风格系列(2):面向对象架构
  • (网络文件系统)N
  • 本地部署Scratch在线编辑器
  • Ngrok 配置:实现 Uniapp 前后端项目内网穿透
  • Recycling Krylov Subspace 方法解释与开源实现
  • 【Arthas实战】常见使用场景与命令分享
  • 电子电路:电容在电子电路中到底发挥着什么作用?
  • Unity 批量将图片从默认类型改为Sprite类型
  • 数字金融发展对商业银行信用风险的影响研究(stata分析范文)
  • 描述性统计图表
  • HC32L190 ADC采集
  • firewall防火墙
  • 前端方法的总结及记录
  • 隧道结构安全在线监测系统解决方案
  • 探秘雷克赛恩生产基地:解码国产投影技术深耕之路
  • 动态规划-63.不同路径II-力扣(LeetCode)
  • 操作系统知识总结
  • 丝杆升降机最大载荷的工程力学解析与选型实践
  • 懒汉式单例模式的线程安全实现
  • ros2中自定义的package查不到?
  • 事件响应策略规范模版
  • 基于Unity的简单2D游戏开发
  • [特殊字符] 如何优雅地避免 SQL 多表 LEFT JOIN 造成的笛卡尔积放大问题?
  • springboot连接高斯数据库(GaussDB)踩坑指南
  • 杰理ac696配置mic
  • 二水平设计的单次重复
  • 【Shell的基本操作】
  • jvm第一篇《内存与垃圾回收》学习笔记第一章jvm初始
  • 电平匹配电路