shell多台机器批量升级jar包

目录

1.要求

  (1) yum -y install expect #安装expect

  (2) 任其中一台为主节点,并做 到其余节点免密登录

  (3) 集群节点密码一致

2.脚本

3.使用

(1)全部节点密码改为一致

(2)选一台为主节点到其他节点免密

(3)将脚本上传至主节点

(4)将主机名、路径、jar包名称、ip以及节点范围更改为自己环境的

(5)先在主节点完成一次升级(后续也是,手动升级主节点,然后执行脚本同步到其余节点)

(6)执行脚本截图


1.要求

  (1) yum -y install expect

  (2) 任其中一台为主节点,并到其余节点免密登录

                 也有ssh批量免密脚本,可自行找,或联系我获取

  (3) 集群节点密码一致,此处ip为连续ip,如不连号,请更改相应ip的for循环部分

2.脚本

#!/bin/bash
#2020/07/28 Aiden著
#jar包批量部署
#前提:ssh免密登陆,见ssh-deployer.sh。expect安装

 

#路径定义,绝对路径path,jar包名称name,绝对目录route
jar_path=/data/pss/PssServer-0.0.1-SNAPSHOT.jar
jar_name=PssServer-0.0.1-SNAPSHOT.jar
jar_route=/data/pss/


#进程定义,统计行数run,取值pid。
jar_run=`ps -ef |grep PssServer-0.0.1-SNAPSHOT.jar |grep -v grep|wc -l`
jar_pid=`ps -ef |grep PssServer-0.0.1-SNAPSHOT.jar |grep -v grep|awk '{print $2}'`

 

#集群地址\密码,我在这里使用主机名,并已配置hosts. 将集群的所有主机名添加至此,密码为一致。
servers="CMDI-SCDD-BGSvr-01 CMDI-SCDD-BGSvr-02 CMDI-SCDD-BGSvr-03 CMDI-SCDD-BGSvr-04 CMDI-SCDD-BGSvr-05 CMDI-SCDD-BGSvr-06 CMDI-SCDD-BGSvr-07 CMDI-SCDD-BGSvr-08 CMDI-SCDD-BGSvr-09 CMDI-SCDD-BGSvr-10 CMDI-SCDD-BGSvr-11 CMDI-SCDD-BGSvr-12"
username="SjyPss2020"

 

#hostname获取当前主机名,startname填写当前主机名
hostname=`hostname`
startname="CMDI-SCDD-BGSvr-01"

 

#当前时间定义/年月日时分秒
jar_date=`date +%Y%m%d%H%M`

 

#统一杀掉集群内所有进程
kill_run(){
for i in {19..29}
do
pid=$(ssh SjyPss2020@10.254.218.$i "ps -ef | grep PssServer | grep -v grep | awk  '{print $2}'"| awk '{print $2}')
ssh SjyPss2020@10.254.218.$i "kill -9 ${pid}"
done
}

 

#统一备份集群节点文件
mv_run(){
for i in {19..29}
do
date=$(date +%Y%m%d%H%M)
ssh SjyPss2020@10.254.218.$i "mv /data/pss/PssServer-0.0.1-SNAPSHOT.jar /data/pss/PssServer-0.0.1-SNAPSHOT.jar-$date"
done
}

 

#统一分发文件到集群内所有节点
copy_target_host(){
for i in {19..29}
do
expect << eof
    spawn scp $jar_path $username@10.254.218.$i:/data/pss/
    expect {
        "(yes/no)" { send "yes\r"; exp_continue; }
        "*assword:" {send $2\r }
    }
    expect eof
eof
done
}

 

#统一启动jar包
startup_run(){
for i in {19..29}
do
 ssh SjyPss2020@10.254.218.$i > /dev/null 2>&1 << EOF
 cd /data/pss/
 sh pss.sh
 exit
EOF
done
}


#==============输出信息==============#

echo -e "\033[32m
#-------------------------#
#       1.杀掉进程        #
#       2.备份jar包       #
#       3.分发文件        #
#       4.启动jar包       #
#       5.执行1234        #
#-------------------------#
\033[0m"
read -p "请选择要执行的项目序列号(q退出):" nub

#执行重启项
case $nub in
1)
echo -e "\033[32m start kill \033[0m"
kill_run
echo -e "\033[32m kill ok! \033[0m"
;;
2)
echo -e "\033[32m start backup \033[0m"
mv_run
echo -e "\033[32m backup ok \033[0m"
;;
3)
echo -e "\033[32m start scp \033[0m"
copy_target_host
echo -e "\033[32m scp ok \033[0m"
;;
4)
echo -e "\033[32m start startup \033[0m"
startup_run
echo -e "\033[32m startup ok \033[0m"
;;
5)
echo -e "\033[32m start kill \033[0m"
kill_run
echo -e "\033[32m kill ok! \033[0m"

echo -e "\033[32m start backup \033[0m"
mv_run
echo -e "\033[32m backup ok \033[0m"

echo -e "\033[32m start scp \033[0m"
copy_target_host
echo -e "\033[32m scp ok \033[0m"

echo -e "\033[32m start startup \033[0m"
startup_run
echo -e "\033[32m startup ok \033[0m"
;;
q)
  exit 0
;;
*)
  echo -e "\033[31m Error,输出有误,请输入1-5位数字,或以q结束. \033[0m"
  exit 1
;;
esac

 

 

 

 

 

 

3.使用

(1)全部节点密码改为一致

(2)选一台为主节点到其他节点免密

(3)将脚本上传至主节点

(4)将主机名、路径、jar包名称、ip以及节点范围更改为自己环境的

(5)先在主节点完成一次升级(后续也是,手动升级主节点,然后执行脚本同步到其余节点)

(6)执行脚本截图

  

注:可先从1-4的顺序单独测试一遍,然后有错误更改对应板块函数内容,最后以及以后可执行5一键完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为互联网铺一条公路

你的支持,我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值