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

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.dtcms.com/a/194040.html

相关文章:

  • 大语言模型与多模态模型比较
  • Android trace中CPU的RenderThread与GPU
  • 【八股战神篇】Java高频基础面试题
  • Solon Ai Flow 编排开发框架发布预告(效果预览)
  • 系统架构设计师案例分析题——web篇
  • PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践
  • 【串流VR手势】Pico 4 Ultra Enterprise 在 SteamVR 企业串流中无法识别手势的问题排查与解决过程(Pico4UE串流手势问题)
  • 强化学习算法实战:一个例子实现sarsa、dqn、ddqn、qac、a2c、trpo、ppo
  • STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解
  • 2026《数据结构》考研复习笔记四(绪论)
  • GPU Runtime Suspend 调试与验证:从 sysfs 到 perf 分析
  • 气象科普的边界在哪?数字交互装置正在重新定义展厅教育形态!
  • 基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)
  • 《AI大模型应知应会100篇》第65篇:基于大模型的文档问答系统实现
  • 一种应用非常广泛的开源RTOS(实时操作系统):nuttx
  • 【HTML 全栈进阶】从语义化到现代 Web 开发实战
  • DDD领域驱动介绍
  • C++ asio网络编程(7)增加发送队列实现全双工通信
  • 【研0学习计划表】
  • 图像分类实战:基于ResNet实现猫狗识别
  • MySQL的存储过程
  • 数学复习笔记 12
  • 深入浅出 MinIO:身份管理与权限配置实战 !
  • C#学习第23天:面向对象设计模式
  • SD2351核心板:开启AI视觉普惠化新时代
  • 涂色不踩雷:如何优雅解决 LeetCode 栅栏涂色问题
  • Room数据库
  • 筑牢信息安全防线:涉密计算机与互联网隔离的理论实践与风险防控
  • 【pbootcms】打开访问首页显示未检测到您服务器环境的sqlite3数据库拓展,请检查php.ini中是否已经开启该拓展
  • 现代计算机图形学Games101入门笔记(十二)