因为我开源的一键部署应用到linux服务器的AntDeploy, 在linux部署是需要安装一个agent服务(systemctl服务)

如果是手动第一次安装的话 需要敲

  1. 下载 wget
  2. 解压 tar
  3. 修改配置文件的token
  4. 复制到指定安装目录
  5. 设置权限
  6. 设置systemd
  7. 设置systemctl
  8. 清除临时文件

至少这8中类型的命令

如果我的agent需要更新版本的话,那么需要重新来一遍

  1. 下载 wget
  2. 解压 tar
  3. 配置文件保存备份
  4. 复制到指定安装目录,并恢复先前的配置
  5. 设置权限
  6. 设置systemd
  7. 设置systemctl
  8. 清除临时文件

这么多类型的命令,我们把它们都放在一个脚本文件里面,然后只需要一行命令就可以搞定,是不是很爽呢


curl https://files-cdn.cnblogs.com/files/yudongdong/install_antdeploy_agent.sh|sudo sh

#!/bin/sh #当前时间戳
timestamp=$(date "+%Y%m%d%H%M%S")
#随机数
randomstr=$RANDOM
#生成token
md5hash=$(echo -n ${timestamp}${randomstr} | md5sum | head -c 32)
#先删除当前文件夹下的AntAgent.tar.gz文件
sudo rm -rf AntAgent.tar.gz >/dev/null 2>&1 &
#删除当前文件夹下的AntAgent文件夹
sudo rm -rf AntAgent >/dev/null 2>&1 &
#下载
sudo wget https://files.cnblogs.com/files/yudongdong/AntAgent.tar.gz
#解压到当前文件夹下的AntAgent文件夹
sudo tar -xvzf AntAgent.tar.gz --one-top-level
#停止AntAgent服务
sudo systemctl stop AntAgent >/dev/null 2>&1 &
#如果是更新的话 把配置文件放到temp目录下
if [ -d "/usr/AntAgent" ];then
   sudo cp -rf /usr/AntAgent/AntDeployAgentLinuxService.config AntAgent/AntDeployAgentLinuxService.config
   md5hash=''
else 
  #更改配置文件里的Token
  sudo sed -i -e 's/p@ssw0rd/'"$md5hash"'/g' AntAgent/AntDeployAgentLinuxService.config
fi
#删除安装目录的AntAgent文件夹
sudo rm -rf /usr/AntAgent >/dev/null 2>&1 &
#复制到安装目录
sudo mv -f AntAgent /usr/
#清除本地
sudo rm -rf AntAgent.tar.gz >/dev/null 2>&1 &
sudo rm -rf AntAgent >/dev/null 2>&1 &
#设置权限
sudo chmod +x /usr/AntAgent/AntDeployAgentLinuxService
#设置systemd
sudo cp /usr/AntAgent/AntAgent.service /etc/systemd/system/AntAgent.service
#设置systemctl
sudo systemctl daemon-reload
sudo systemctl enable AntAgent
sudo systemctl start AntAgent
sudo systemctl status AntAgent --no-pager
if [ -z "${md5hash}" ]; then
  echo 'OK, AntAgent has been updated in /usr/AntAgent.'
else 
  echo 'OK, AntAgent has been installed in /usr/AntAgent with Token:'"$md5hash"''  
fi

要点:

  • bash的获取当前时间戳
  • bash如何获取md5
  • bash如何做条件判断
  • bash如何做命令做容错处理
  • bash如何对字符串做拼接展示
  • bash如何更改文件里的内容

先关注收藏,没准你以后用到,节省你的时间

一键部署bash脚本怎么写的更多相关文章

  1. 一键部署lamp 脚本

    一键部署lamp 脚本 如下: #!/bin/bash systemctl stop firewalld systemctl disable firewalld setenforce 0 #----- ...

  2. 一键部署lnmp脚本

    先下载好nginx安装包,解包之后可以执行下面的脚本,一键部署 cd nginx-1.12.2 useradd -s /sbin/nologin nginx./configuremakemake in ...

  3. 一键部署lamp脚本

    #!/bin/bash systemctl stop firewalld systemctl disable firewalld setenforce 0 #-------Apache------ # ...

  4. openvpn部署之快速入门实战+一键部署openvpn脚本

    个人原创禁止转载 软件环境: Centos6.9 x64 openvpn-2.4.3-1.el6.x86_64.rpm easy-rsa-2.2.2-1.el6.noarch.rpm    #推荐使用 ...

  5. 一键部署haproxy脚本

    HAPROXY_VERSION=2.6.6 HAPROXY_FILE=haproxy-${HAPROXY_VERSION}.tar.gz #HAPROXY_FILE=haproxy-2.2.12.ta ...

  6. Docker一键部署Hadoop心得(一)

    最近一直在折腾使用docker一键部署全分布式hadoop集群,虽然一键部署的脚本写好了并且可以成功运行出各个节点,但在运行一个wordcount实例时出现了错误,错误如下: java.io.IOEx ...

  7. 源码编译安装Apache-附一键部署脚本

    1.进入apache官网https://www.apache.org/,点击Download 2.如图选择 3.选择httpd 4.下载两个包,2.2为CentOS6使用,2.4为CentOS7使用 ...

  8. Centos 环境一键部署脚本(shell脚本)

    谨以此文纪念吊炸天的Centos环境一键部署方案的新鲜出炉 辛苦大半年,产品准备上线了,BOSS亲自体验安装部署,看着超过200+页的安装文档直接崩溃了(需要部署23个基础服务),经历了超过3个小时的 ...

  9. ceph集群一键部署脚本

    分布式存储ceph相信大家比较熟悉了.某项目临时要做一个40个节点的存储集群.所以写了这个脚本. 一键部署脚本如下: git clone https://github.com/luckman666/d ...

随机推荐

  1. jmeter工具初探

    jmeter工具初探 一.jmeter工具介绍 1.一种免费的java开源工具,可以进行二次开发 2.运行环境:java运行环境,需要安装JDK,配置JAVAHOME 环境变量 3.下载jmeter: ...

  2. go-micro使用Consul做服务发现的方法和原理

    go-micro v4默认使用mdns做服务发现.不过也支持采用其它的服务发现中间件,因为多年来一直使用Consul做服务发现,为了方便和其它服务集成,所以还是选择了Consul.这篇文章将介绍go- ...

  3. 下载并配置pycharm

    1.下载(推荐下载社区版) https://www.jetbrains.com/pycharm/download/#section=windows 2.配置代码编写前注释 得到这种效果: 3.设置字体 ...

  4. iptables系列教程(三)| iptables 实战篇

    一个执着于技术的公众号 实战1 服务器禁止ping iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP // 禁止任何人ping通本机 &qu ...

  5. spring4+hibernate4 整合

    1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...

  6. JUC自定义线程池练习

    JUC自定义线程池练习 首先上面该线程池的大致流程 自定义阻塞队列 首先定义一个双向的队列和锁一定两个等待的condition 本类用lock来控制多线程下的流程执行 take和push方法就是死等, ...

  7. 使用VUE+SpringBoot+EasyExcel 整合导入导出数据

    使用VUE+SpringBoot+EasyExcel 整合导入导出数据 创建一个普通的maven项目即可 项目目录结构 1 前端 存放在resources/static 下 index.html &l ...

  8. 由C# dynamic是否装箱引发的思考

    前言 前几天在技术群里看到有同学在讨论关于dynamic是否会存在装箱拆箱的问题,我当时第一想法是"会".至于为啥会有很多人有这种疑问,主要是因为觉得dynamic可能是因为有点特 ...

  9. linux篇-图解cacti监控安装

    1登录 admin admin 2点击devices localhost 3进入配置保存 4保存 http服务要启动哦 5一步步做 6graph tree 7执行/usr/bin/php /var/w ...

  10. 『忘了再学』Shell基础 — 16、位置参数变量

    目录 1.位置参数变量$n 2.位置参数变量$*和$@ 3.位置参数变量$# 位置參数变量的作用主要用于脚本的传参. 位置參数变量的名称和作用都是确定不能改变的,但是该变量的内容是可以更改的,也就是变 ...