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 "操作完成"