环境说明

开发机: mac 系统
开发服务器: ubuntu 20.4
开发服务器目录config

/www/websites/my: 服务器上项目目录
/www/websites/my/backup: 服务器上项目打包文件备份存储目录
/www/websites/my/config: 服务器上项目配置文件目录
/www/websites/my/logs: 服务器上项目日志文件目录
/www/websites/my/static: 服务器上项目静态文件目录

自动脚本

文件另存为deploy.dev.sh ,设置可执行权限chmod +x deploy.dev.sh,使用时候执行./deploy.dev.sh 即可
需要你配置如下几个

编译后的文件名
远程服务器的部署目录
远程服务器的项目文件名(替换文件名称)
服务器ip
服务器账号
服务器密码
执行启动脚本 处,替换你需要的jar 参数

#!/usr/bin/env zsh
#自动打包上传到开发服务器脚本
# fox#部署环境
DEPLAY_ENV=dev
#当前脚本保存在项目/cicd目录下,所有要返回到项目根目录
DIR=$(cd $(dirname $0); pwd)/../
#进入项目根目录
cd $DIR
#项目
PROJECT=$(pwd)
#编译后文件名
BUILD_FILE=fox.jar
#编译目录
BUILD_PANTH=${PROJECT}/build/libs
#完整编辑绝对路径
BUILD_PANTH_FILE=${BUILD_PANTH}/${BUILD_FILE}
#远程服务器的部署目录
DEPLAY_PANTH=/www/websites/
#远程服务器的项目文件名(替换文件名称)
DEPLAY_FILE=fox.jar
#
VERSION=1.0.0
#服务器ip
SERVER_HOST=服务器ip
#服务器ssh端口
SERVER_PORT=22
#服务器账号
SERVER_USER=root
#服务器密码
SERVER_PASSWORD=123456
#时间戳
date=$(date +%Y%m%d%H%M%S)#版本号
if [ -z "$VERSION" ]; thenecho "版本号不能为空"exit 1fiif [ "$VERSION"x =  "0.0.0"x ]; thenecho "版本号不能为 0.0.0"exit 1fi# 判断项目模块是否存在
if [ ! -d "${PROJECT}" ];thenecho ${PROJECT}echo "项目不存在"exit 1
fi#编译命令
./gradlew build -x test# 检测编译后文件
if [ ! -f "${BUILD_PANTH_FILE}" ]; thenecho "$BUILD_PANTH_FILE 编译后文件不存在"exit 1
fi#登陆服务器
echo "复制文件到远程服务器"
expect <<EOF#设置超时set timeout 200#复制spawn scp -r $BUILD_PANTH_FILE $SERVER_USER@$SERVER_HOST:$DEPLAY_PANTH/backup/$BUILD_FILE-$dateexpect {"yes/no" { send "yes\n";exp_continue }#密码"*assword*" { send "$SERVER_PASSWORD\n" }}expect "]#" { send "exit\n" } expect eof
EOF
echo "复制文件到远程服务器:成功"
echo "远程服务器,启动程序"
expect <<EOFset timeout 30#登陆spawn ssh $SERVER_USER@$SERVER_HOSTexpect {"yes/no" { send "yes\n";exp_continue }#密码"*assword*" { send "$SERVER_PASSWORD\n" }}#列表expect "]#" { send "/usr/bin/ls -l $DEPLAY_PANTH/backup/$BUILD_FILE-$date\n" }#替换原文件expect "]#" { send "/usr/bin/cp -rf $DEPLAY_PANTH/backup/$BUILD_FILE-$date $DEPLAY_PANTH/$DEPLAY_FILE\n" }#执行启动脚本#expect "]#" { send "/usr/bin/bash $DEPLAY_PANTH/run.sh restart \n" }expect "]#" { send "/usr/bin/cd $DEPLAY_PANTH && nohup java  -Xms128M -Xmx1024m  -jar $DEPLAY_FILE.jar & \n" }#推出expect "]#" { send "exit\n\n" } expect eof
EOF
echo "远程服务器,启动程序:启动成功"echo "操作成功"

自动打包上传部署脚本 可以配合 java jar 启动脚本 使用

mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本相关推荐

  1. Linux使用scp命令远程复制/上传文件

    远程拷贝服务器文件使用scp命令 例如: A:1.1.1.1 B:2.2.2.2 现在我们身处B机器上,如果想把A的home/data 复制到B的 /home/newdata里,则: scp root ...

  2. Win10下SCP命令免密码上传、下载工程师服务器上的文件

    [1]本地win10操作步骤 1)在本地win10系统打开命令行工具(win+r) 2)执行命令:ssh-keygen -t rsa 3)提示输入保存路径,直接回车,默认即可. 4)提示输入密码,因为 ...

  3. Win10下用SCP命令免密码上传、下载阿里云服务器上的文件

    需求: 需要定时把阿里云服务器上的数据备份文件下载到本地备份,所以需要在本地win10系统上定时执行从阿里云服务器上下载备份文件的操作. 环境和工具 本地win10系统及自带的SCP工具,工具目录:C ...

  4. Linux java集成安装环境,Linux下Java环境安装

    本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...

  5. Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT)

    转自:Linux下JAVA WEB服务器的搭建一(JDK\MYSQL\TOMCAT),更优阅读体验http://www.kongzid.com/ 目录 1.JDK1.8的安装配置 1.1 环境检查 1 ...

  6. linux java 工具_Linux运维知识之linux下java版本管理工具jenv使用介绍

    本文主要向大家介绍了Linux运维知识之linux下java版本管理工具jenv使用介绍,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 不同的项目使用的java版本不同,每次切 ...

  7. Linux下Tomcat项目启动报错

    Linux下Tomcat项目启动报错 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading cla ...

  8. linux 命令行 迅雷替代,Mac/Linux下迅雷替代方案

    还记得我两年前写的<DIY了家用NAS>吗?现在又带来新的升级啦.当初的NAS最多能使用Transmission来进行BT下载,那时就在想,如果能下载普通的http资源就好了.再进一步,有 ...

  9. Linux下Java程序中文乱码问题研究

    Linux下Java程序中文乱码问题研究 摘  要:在一个项目的开发中,我用linux内核源代码和busybox源代码自己编译打造的操作系统mylinux 1.0 ,服务器是我用java语言自己编写的 ...

  10. Linux下Java Font 中文字体不显示

    为什么80%的码农都做不了架构师?>>>    linux系统中jre不支持字体解决方法 Linux下Java中文字体不显示 https://blog.csdn.net/kenera ...

最新文章

  1. C# WinForm源码收集
  2. tensorflow源码编译教程_极简入门TensorFlow C++源码
  3. 快速恢复Word、Excel的默认初始设置
  4. 前端2018年12月9日 前端开发路上的小白心得--励志当个领路人
  5. 大白话5分钟带你走进人工智能-第十九节逻辑回归之优化点(4)
  6. python pip的配置
  7. 排列组合-生成集合的所有子集
  8. 魔百盒UNT403A UNT413A 卡刷精简固件-芯片S905L3
  9. 疯狂讲义java_《疯狂Java讲义》 1-概述
  10. pwm脉宽调制c语言程序,MCS-51系列单片机C语言编程PWM脉宽调制器程序模板
  11. android实现购物车效果,Android实现加入购物车动画
  12. PostgreSQL 生成随机数字、字符串、日期、验证码以及 UUID
  13. java共享充电宝管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  14. 大数据破获网售假耐克案
  15. 有苦有乐的算法 --- 基数排序
  16. 2021年N1叉车司机证考试及N1叉车司机模拟考试题库
  17. 基于机器学习组合模型的个人信用评估
  18. 计算机cad比例尺1 150,cad比例尺1:100是什么意思-时间财富网
  19. 读《陪孩子终身成长》后记
  20. 独立级联(Independent Cascade)模型的原理及代码实现

热门文章

  1. PHP导出数据库数据字典脚本
  2. matlab java mac_macOS Mojave上Matlab 2018a与Java的联合编程
  3. 拓端tecdat|R语言最优化问题中的共轭函数
  4. Android教程 第四章 用户界面设计基础
  5. 【Docker】使用介绍
  6. mysql 监听 udp_通用TCP、UDP服务监控脚本
  7. xgboost4j jar包下载
  8. 全卷积网络 FCN 详解
  9. linux大文件分割与合并
  10. python实现Longest Common Subsequence最长公共子序列算法