十、Shell编程--实现一个工程编译后上传到远程服务器的自动化脚本

思路

1、首先工程打包在本地执行相关工程的编译打包命令即可

    如:

         angular工程执行ng build --aot --prod;

         maven工程执行mvn clean package

2、工程编译完毕,要上传到远程服务器,但是上传之前,首先要把之前的目录的老文件清空(或先备份)

     远程登录这里使用ssh登录到服务器,然后执行rm -fr *清空

     对于备份的话,可以先使用gzip命令,然后使用mv 移动到备份目录,做好版本恢复

3、使用scp命令,将文件拷贝到指定的目录,完毕!

4、完整实现思路:编译工程->本地登录远程服务器->执行远程脚本备份并清理发布目录->返回本地拷贝编译后的文件到远程服务器

实现

  1、首先实现ssh的免密码登录(每次输入密码就不是自动化脚本了,本机与服务器要预先安装ssh)

     1)本机生成ssh公钥

 ssh-keygen -t rsa

      注:一路回车就可以,如果你在执行过程中输入密码,执行脚本时还是会提示输入密码

     2)更改服务器ssh设置

        <1>登录到服务器~/.ssh目录下,将id_rsa.pub的内容写入到authorized_keys文件中

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNqTESKKKT7X3pQYRz0RD5/esMatuPhZZhKy/l8JlFuojxY0yDRE1vZ4iJHNZoJ4P6wUl2kSFXOZTw+67e+RUKBDssCL5BS8M1NN4EMy4F99zTVRjlrT1bpky48f8wxaOkmwco1QMKCXKwLhBEAHEYgzXly1FKyG3Zlc8X+HhovXepMwgINchF2Pnmf3IeHOdTk7NsmM6f5B+w7sZVWDl0nW4CeXlk+nhMIfNxQQu7tkoAnFElaaBrozs4BZAE2RMBAlQqvcIOAZ4BEff3A5RbAIXDqQYnJ2zesf7PSFigMez2t2jpBVC3x3IfwEYs9HZX/KTVTUN0yZcSfUDj8S6x

        <2>修改或新增config文件

Host 本地机器名
        HostName 本机外网ip
        User 本机用户名
        PubkeyAuthentication yes

        <3>本机登录远程机器

ssh 远程用户名@远程机ip  "远程脚本.sh" // 这里的登录到服务器上需要备份并删除服务器上的文件的脚本必须是远程服务器上执行

  2、备份原来的文档

     1)使用tar命令压缩归档老的文件

tar -cvzf 文件名.tar.gz *   // *代表目录下所有文件

     2)使用mv命令将归档文件移动到备份目录

mv 文件名.tar.gz  目的目录名/

  3、上传本地文件到指定的发布目录     

scp 本地文件  用户名@远程ip:/目录名称
脚本

1、本地脚本(uploadsh)

#!/bin/bash

echo "开始编译本地文件"
ng build --build-optimizer --aot --prod

ssh -l root 远程地址 "/root/test.sh"

echo "开始拷贝本地文件到远程目录!"
cd dist
scp * root@远程IP地址:/root/test

2、远程脚本(test.sh)

#/bin/bash

cd /root/test
dd=`date +%F`
echo "开始压缩文件myapp_$dd.tar.gz"
tar czf myapp_$dd.tar.gz *
mv myapp_$dd.tar.gz /back/
echo "备份成功,文件名称-->myapp_$dd.tar.gz"

rm -fr *
echo "清空文件目录成功!"
exit
注:远程脚本必须可执行!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值