#!/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 |