前提准备
创建脚本
首先在项目目录下新建bin文件夹存放.bat文件,然后新建put.bat
编写脚本
put.bat
@echo off
echo.
echo [信息] 打包Web工程,生成war/jar包文件。
echo.
%~d0
cd %~dp0
cd ../
call mvn clean package -Dmaven.test.skip=true
echo [信息]打包完成
echo [信息]准备上传...
:: 先备份当前目录路径
set oldPath=%cd%
:: 设置winscp安装目录(这里修改为个人实际的安装路径)
set winscpInstallDir=D:\software\winscp
:: 设置PuTTY安装目录(这里修改为个人实际的安装路径)
set puTTYInstallDir=D:\software\PuTTY
:: 远程主机linux IP
:: 如果不需要命令行输入可以直接写死, 如:
set ipaddr=110.11.11.11
:: set /p ipaddr=请输入目标主机IP:
:: 登录用户名
:: 如果不需要命令行输入可以直接写死, 如:
set username=root
:: set /p username=username:
:: 登录密码(注意啦!!!!)
:: 如果密码中存在 & @ 等特殊字符时,请输入 ^ 用与转义
:: 至于这里为什么需要连续3个^,是因为密码在set password中被转义一次,在打开远程连接的时候会再被转义一次
:: 如: admin^^^@123^^^&456 ==> admin^^@123^^&456 ==> admin^@123^&456 ==> admin@123&456
:: 声明变量 ==》 set赋值转义一次 ==》往winscp.txt中写时候再转义一次 ==》 实际执行时候
:: 如果不需要命令行输入可以直接写死(也需要转义), 如:
:: set password=123456
set /p password=password:
:: 设置需要上传的文件,可找到打包好项目(jar/war)
set localFilePath=D:\project\demo.jar
:: 保存的linux远程目录
set remotePath=/www/project/
:: 打印提示信息
Echo 准备推送文件到远程服务器...
:: 生成winscp执行的脚本
Echo option batch on > winscp.txt
Echo option confirm off > winscp.txt
:: 打开远程链接
:: 如果用户名或密码带有特殊字符,推荐直接在这里写死(也需要转义)
:: 密码与ip之间的@符号,也需要转义 写为^@
Echo open %username%:%password%^@%ipaddr% > winscp.txt
:: 进入到目标文件夹
Echo cd %remotePath% >> winscp.txt
Echo option transfer binary >> winscp.txt
:: 上传到远程
Echo put %localFilePath% >> winscp.txt
Echo close >> winscp.txt
Echo exit >> winscp.txt
:: 到winscp.com 所在盘符
cd %winscpInstallDir%
:: 使用winscp将文件上传到远程服务器,script为生成的步骤文件
winscp.com /console /script=%oldPath%\winscp.txt
:: 删除本次上传生成的winscp.txt
cd %oldPath%
del winscp.txt
Echo 推送完成...
:: 到PuTTY 所在盘符
cd %puTTYInstallDir%
:: 使用PuTTY执行linux脚本命令,test.sh为linux上执行的命令
Echo 开始启动...
putty.exe -ssh -pw %password% -m d:/test.sh %username%^@%ipaddr%
Echo 结束...
pause
test.sh
其中start.sh为linux目录中的执行文件,可参考 《linux脚本执行kill进程并重启》
#!/bin/sh
cd /www/project/
#mkdir /tmp/test061502
sh start.sh
#mkdir test06170
评论 (0)