提交 a6a2323e authored 作者: 陈泽健's avatar 陈泽健

fix(edit):deploy脚本增加all参数接收,接收参数all时自动部署全部系统,无需交互菜单选择,作为AI远程自动化部署调试使用,不传all时依旧走原有逻辑。

上级 d95380cf
#!/bin/bash
# 自动响应部署脚本的交互式提示
cd /data/offline_auto_unifiedPlatform
# 使用输入重定向自动响应所有提示
./new_auto.sh <<EOF
1
y
y
y
y
y
EOF
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
- 登录目标服务器,并切换到root用户。 - 登录目标服务器,并切换到root用户。
3. 部署执行 3. 部署执行
- 严格根据部署文档执行部署操作!!! - 严格根据部署文档执行部署操作!!!
- 如遇选择部署的系统,则选择全部系统,并执行部署操作。直接在交互式SSH会话中运行脚本,手动选择"全部系统" - 部署文档中提及是执行`new_auto.sh`,但你需要执行`new_auto.sh --all`,这样就不需要交互选择系统部署了
- 不要自己乱操作,严格按照文档操作执行即可。 - 不要自己乱操作,严格按照文档操作执行即可。
- 文档中明确标明超管账号密码为:superadmin Ubains@1357 - 文档中明确标明超管账号密码为:superadmin Ubains@1357
- 授权文件上传操作,直接根据部署文档使用web界面的上传功能。 - 授权文件上传操作,直接根据部署文档使用web界面的上传功能。
......
...@@ -930,6 +930,71 @@ function deploy_services() { ...@@ -930,6 +930,71 @@ function deploy_services() {
# 🎯 解析过滤参数,确定允许的菜单编号 # 🎯 解析过滤参数,确定允许的菜单编号
# ======================================== # ========================================
local allowed_numbers=() local allowed_numbers=()
# 特殊处理:如果传入 "all",直接部署所有系统
if [ "$filter_services" = "all" ]; then
log "INFO" "🤖 收到 'all' 参数,自动部署所有系统"
allowed_numbers=(1 2 3 4 5)
# 直接跳到部署流程,跳过所有交互界面
log "INFO" "=================================================="
log "INFO" "🚀 开始自动部署所有系统"
log "INFO" "=================================================="
local success_count=0
local total_count=0
for choice in "${allowed_numbers[@]}"; do
local func_list="${SERVICE_MAP[$choice]}"
local label="${SERVICE_LABEL[$choice]}"
if [[ -z "$label" ]]; then
log "ERROR" "⚠️ 未知服务编号: $choice"
continue
fi
log "INFO" "=================================================================="
log "INFO" "🚀 正在部署: $label"
log "INFO" "=================================================================="
# 执行该服务关联的每一个函数
local service_success=true
for func_name in $func_list; do
if declare -f "$func_name" > /dev/null; then
log "INFO" "▶️ 执行函数: $func_name"
"$func_name"
if [ $? -ne 0 ]; then
log "ERROR" "❌ 函数执行失败: $func_name"
service_success=false
break
else
log "INFO" "✅ $func_name 执行成功"
fi
else
log "ERROR" "❌ 未找到函数: $func_name"
service_success=false
break
fi
done
if [ "$service_success" = true ]; then
log "INFO" "✅ $label 部署成功"
((success_count++))
else
log "ERROR" "❌ $label 部署失败"
fi
done
# 最终统计
local fail_count=$(( ${#allowed_numbers[@]} - success_count ))
log "INFO" "=================================================="
log "INFO" "🎯 自动部署完成:成功 $success_count 个服务,失败 $fail_count 个"
log "INFO" "=================================================="
return $(( fail_count > 0 ? 1 : 0 ))
fi
# 正常流程:解析服务名称
if [ -n "$filter_services" ]; then if [ -n "$filter_services" ]; then
log "INFO" "📋 收到服务过滤参数: $filter_services" log "INFO" "📋 收到服务过滤参数: $filter_services"
# 将逗号分隔的服务名称转换为对应的菜单编号 # 将逗号分隔的服务名称转换为对应的菜单编号
......
...@@ -2,7 +2,33 @@ ...@@ -2,7 +2,33 @@
#------------------------------工具类模块--------------------------------------------------- #------------------------------工具类模块---------------------------------------------------
# 日志打印函数 # 日志打印函数
LOG_FILE="/data/logs/new_auto_script.log" LOG_FILE="/data/logs/new_auto_script.log"
mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null"
# 自动部署所有服务的标志(默认false,需要通过--all参数启用)
AUTO_DEPLOY_ALL=false
# 解析命令行参数
while [[ $# -gt 0 ]]; do
case $1 in
--all)
AUTO_DEPLOY_ALL=true
log "INFO" "启用自动部署所有系统模式"
shift
;;
--help|-h)
echo "用法: $0 [选项]"
echo "选项:"
echo " --all 自动部署所有系统(无需手动选择)"
echo " --help 显示此帮助信息"
exit 0
;;
*)
echo "未知参数: $1"
echo "使用 --help 查看帮助信息"
exit 1
;;
esac
done
# 用户输入的东西也同步记录到日志信息里面 # 用户输入的东西也同步记录到日志信息里面
function log() { function log() {
# 获取当前时间 # 获取当前时间
...@@ -1328,7 +1354,23 @@ function getLatestVersion() { ...@@ -1328,7 +1354,23 @@ function getLatestVersion() {
# 1. 默认显示全部服务:deploy_services "" # 1. 默认显示全部服务:deploy_services ""
# 2. 指定服务:deploy_services "meeting,monitor,voice" # 2. 指定服务:deploy_services "meeting,monitor,voice"
# 3. 通过变量:deploy_services "$deploy_services_type" # 3. 通过变量:deploy_services "$deploy_services_type"
# 4. 自动部署所有系统:./new_auto.sh --all
# deploy_services 调用方式:
# 1. 默认显示全部服务:deploy_services ""
# 2. 指定服务:deploy_services "meeting,monitor,voice"
# 3. 通过变量:deploy_services "$deploy_services_type"
# 4. 自动部署所有系统:deploy_services "all"
# 判断是否启用自动部署所有系统
if [ "$AUTO_DEPLOY_ALL" = true ]; then
log "INFO" "自动部署所有系统,跳过服务选择界面"
deploy_services "meeting,monitor,voice,paperless,cardtable"
else
log "INFO" "进入服务选择界面"
deploy_services "" deploy_services ""
fi
log "INFO" "查看服务是否启动成功——————docker ps" log "INFO" "查看服务是否启动成功——————docker ps"
log "INFO" "系统服务:umysql,uredis,ujava2,uemqx,ustorage,utracker " log "INFO" "系统服务:umysql,uredis,ujava2,uemqx,ustorage,utracker "
$sudoset docker ps $sudoset docker ps
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论