fix: 优化Web-AMR项目部署脚本,简化密码输入逻辑,移除对sshpass和expect工具的依赖,增强用户提示信息
This commit is contained in:
parent
0285b59927
commit
d6aabaf6ed
91
自动部署脚本.bat
91
自动部署脚本.bat
@ -1,4 +1,5 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
chcp 65001 > nul
|
chcp 65001 > nul
|
||||||
title Web-AMR项目部署脚本
|
title Web-AMR项目部署脚本
|
||||||
|
|
||||||
@ -123,24 +124,6 @@ if %errorlevel% neq 0 (
|
|||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
:: 检查是否有sshpass或可替代工具
|
|
||||||
where sshpass >nul 2>&1
|
|
||||||
if %errorlevel% neq 0 (
|
|
||||||
where expect >nul 2>&1
|
|
||||||
if %errorlevel% neq 0 (
|
|
||||||
echo.
|
|
||||||
echo [提示] 为实现密码自动输入,建议安装以下工具之一:
|
|
||||||
echo 1. sshpass - 用于SSH密码自动输入
|
|
||||||
echo 安装方法:在Git Bash中执行 pacman -S sshpass
|
|
||||||
echo 2. expect - 用于自动化交互脚本
|
|
||||||
echo 可通过Cygwin或MSYS2安装
|
|
||||||
echo.
|
|
||||||
echo [当前方案] 脚本会将密码复制到剪贴板,提示输入密码时按Ctrl+V或右键粘贴
|
|
||||||
echo.
|
|
||||||
pause
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
:: 创建临时压缩包
|
:: 创建临时压缩包
|
||||||
echo.
|
echo.
|
||||||
echo [信息] 正在创建临时压缩包...
|
echo [信息] 正在创建临时压缩包...
|
||||||
@ -222,59 +205,32 @@ echo [部署] 开始部署到 !current_name! (!current_host!)...
|
|||||||
echo 目标路径:!current_path!
|
echo 目标路径:!current_path!
|
||||||
echo 用户名:!current_user!
|
echo 用户名:!current_user!
|
||||||
|
|
||||||
:: 检查是否有sshpass工具
|
:: 根据认证方式设置命令前缀
|
||||||
where sshpass >nul 2>&1
|
if "!current_use_key!"=="true" (
|
||||||
if !errorlevel! equ 0 (
|
|
||||||
:: 有sshpass工具,使用自动密码输入
|
|
||||||
set scp_cmd=sshpass -p "!current_pass!" scp -o StrictHostKeyChecking=no
|
|
||||||
set ssh_cmd=sshpass -p "!current_pass!" ssh -o StrictHostKeyChecking=no
|
|
||||||
echo [信息] 使用sshpass自动输入密码
|
|
||||||
) else (
|
|
||||||
:: 没有sshpass工具,检查是否为Windows环境
|
|
||||||
if exist "%windir%\System32\clip.exe" (
|
|
||||||
:: Windows环境,将密码复制到剪贴板
|
|
||||||
echo !current_pass!| clip
|
|
||||||
echo [信息] 密码已复制到剪贴板,可直接粘贴
|
|
||||||
echo [密码] !current_pass!
|
|
||||||
echo [提示] 如果提示输入密码,可以按Ctrl+V或右键粘贴,或手动输入上述密码
|
|
||||||
) else (
|
|
||||||
echo [提示] 如果提示输入密码,请输入:!current_pass!
|
|
||||||
)
|
|
||||||
set scp_cmd=scp -o StrictHostKeyChecking=no
|
set scp_cmd=scp -o StrictHostKeyChecking=no
|
||||||
set ssh_cmd=ssh -o StrictHostKeyChecking=no
|
set ssh_cmd=ssh -o StrictHostKeyChecking=no
|
||||||
|
echo [信息] 使用SSH密钥认证(免密登录)
|
||||||
:: 尝试使用expect脚本(如果可用)
|
) else (
|
||||||
where expect >nul 2>&1
|
:: 检查是否有sshpass工具
|
||||||
|
where sshpass >nul 2>&1
|
||||||
if !errorlevel! equ 0 (
|
if !errorlevel! equ 0 (
|
||||||
echo [信息] 检测到expect工具,尝试自动输入密码
|
set scp_cmd=sshpass -p "!current_pass!" scp -o StrictHostKeyChecking=no
|
||||||
:: 创建临时expect脚本
|
set ssh_cmd=sshpass -p "!current_pass!" ssh -o StrictHostKeyChecking=no
|
||||||
echo set timeout 30 > temp_expect.exp
|
echo [信息] 使用sshpass自动输入密码
|
||||||
echo spawn scp -o StrictHostKeyChecking=no dist_temp.zip !current_user!@!current_host!:/tmp/ >> temp_expect.exp
|
) else (
|
||||||
echo expect "password:" >> temp_expect.exp
|
set scp_cmd=scp -o StrictHostKeyChecking=no
|
||||||
echo send "!current_pass!\r" >> temp_expect.exp
|
set ssh_cmd=ssh -o StrictHostKeyChecking=no
|
||||||
echo expect eof >> temp_expect.exp
|
echo [提示] 如果提示输入密码,请输入:!current_pass!
|
||||||
set scp_cmd=expect temp_expect.exp
|
echo [建议] 安装sshpass工具可以实现自动输入密码
|
||||||
set use_expect=true
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: 上传文件到远程服务器
|
:: 上传文件到远程服务器
|
||||||
echo [信息] 正在上传文件...
|
echo [信息] 正在上传文件...
|
||||||
if defined use_expect (
|
!scp_cmd! dist_temp.zip !current_user!@!current_host!:/tmp/
|
||||||
:: 使用expect脚本
|
|
||||||
!scp_cmd!
|
|
||||||
if exist temp_expect.exp del temp_expect.exp
|
|
||||||
) else (
|
|
||||||
:: 使用普通scp命令
|
|
||||||
!scp_cmd! dist_temp.zip !current_user!@!current_host!:/tmp/
|
|
||||||
)
|
|
||||||
|
|
||||||
if !errorlevel! neq 0 (
|
if !errorlevel! neq 0 (
|
||||||
echo [错误] 文件上传到 !current_name! 失败
|
echo [错误] 文件上传到 !current_name! 失败
|
||||||
echo [提示] 请检查网络连接和SSH配置
|
|
||||||
if defined current_pass (
|
|
||||||
echo [密码提示] 服务器密码: !current_pass!
|
|
||||||
)
|
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -282,23 +238,12 @@ echo [成功] 文件上传到 !current_name! 完成
|
|||||||
|
|
||||||
:: 在远程服务器上解压并部署
|
:: 在远程服务器上解压并部署
|
||||||
echo [信息] 正在远程服务器上解压部署...
|
echo [信息] 正在远程服务器上解压部署...
|
||||||
if defined use_expect (
|
!ssh_cmd! !current_user!@!current_host! "mkdir -p !current_path! && rm -r !current_path!/* 2>/dev/null || true && cd !current_path! && unzip -o /tmp/dist_temp.zip && rm /tmp/dist_temp.zip && echo '部署完成,文件列表:' && ls -la !current_path! || echo '文件列表显示失败,但部署成功'"
|
||||||
:: 为SSH创建expect脚本
|
|
||||||
echo set timeout 60 > temp_ssh_expect.exp
|
|
||||||
echo spawn ssh -o StrictHostKeyChecking=no !current_user!@!current_host! "mkdir -p !current_path! && echo '[步骤1] 正在清空目标目录...' && cd !current_path! && find . -mindepth 1 -delete 2>/dev/null \|\| rm -rf ./* ./.[^.]* 2>/dev/null \|\| true && echo '[步骤2] 目录清理完成,开始解压文件...' && unzip -q -o /tmp/dist_temp.zip && echo '[步骤3] 文件解压完成,清理临时文件...' && rm /tmp/dist_temp.zip && echo '[步骤4] 验证部署结果...' && \[ -f index.html \] && echo '[成功] Web-AMR项目部署完成!' && echo '部署文件列表:' && ls -la !current_path! \|\| echo '[警告] 部署可能存在问题,请检查'" >> temp_ssh_expect.exp
|
|
||||||
echo expect "password:" >> temp_ssh_expect.exp
|
|
||||||
echo send "!current_pass!\r" >> temp_ssh_expect.exp
|
|
||||||
echo expect eof >> temp_ssh_expect.exp
|
|
||||||
expect temp_ssh_expect.exp
|
|
||||||
if exist temp_ssh_expect.exp del temp_ssh_expect.exp
|
|
||||||
) else (
|
|
||||||
!ssh_cmd! !current_user!@!current_host! "mkdir -p !current_path! && echo '[步骤1] 正在清空目标目录...' && cd !current_path! && find . -mindepth 1 -delete 2>/dev/null || rm -rf ./* ./.[^.]* 2>/dev/null || true && echo '[步骤2] 目录清理完成,开始解压文件...' && unzip -q -o /tmp/dist_temp.zip && echo '[步骤3] 文件解压完成,清理临时文件...' && rm /tmp/dist_temp.zip && echo '[步骤4] 验证部署结果...' && [ -f index.html ] && echo '[成功] Web-AMR项目部署完成!' && echo '部署文件列表:' && ls -la !current_path! || echo '[警告] 部署可能存在问题,请检查'"
|
|
||||||
)
|
|
||||||
|
|
||||||
if !errorlevel! neq 0 (
|
if !errorlevel! neq 0 (
|
||||||
echo [错误] !current_name! 远程部署失败
|
echo [错误] !current_name! 远程部署失败
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
echo [成功] !current_name! Web-AMR项目部署完成!
|
echo [成功] !current_name! 部署完成!
|
||||||
exit /b 0
|
exit /b 0
|
Loading…
x
Reference in New Issue
Block a user