shell脚本中解决SCP命令免密登录

应用场景:服务器之间远程传输文件

二 服务器免密登录

四台集群服务器

服务器IP
A47.110.129.242
B172.16.214.209
C172.16.214.251
D172.16.214.252

生成服务器公钥私钥文件
在主机A上执行如下命令来生成配对密钥(id_rsa,id_rsa.pub):

ssh-keygen -t rsa

执行过程中会停留直接按回车执行后后结果:
在这里插入图片描述
将A服务/home/user_01/.ssh/id_rsa.pub 公钥文件复制到B服务对应的.shh 目录并修改文件名authorized_keys

 scp -P 22033  /home/user_01/.ssh/id_rsa.pub  user_01@172.16.214.209:/home/user_01/.ssh/authorized_keys.pub

需要输入服务器密码
C,D服务重复B服务公钥文件复制,参考上面指令

2 .验证是否成功
重复上面文件scp 命令不需要输入密码

二 编辑shell脚本
  1. 创建文件传输文件scp.sh
touch scp.sh
  1. 编辑文件
vim scp.sh
scp -r -P 22033  /wwwroot/java/config user_01@172.16.214.209:/wwwroot/java/
scp -r -P 22033  /wwwroot/java/config user_01@172.16.214.251:/wwwroot/java/
scp -r -P 22033  /wwwroot/java/config user_01@172.16.214.252:/wwwroot/java/

#scp -P 22033  /wwwroot/java/tomcat-app/kxgzapp.war user_01@172.16.214.209:/wwwroot/java/tomcat-app/
#scp -P 22033  /wwwroot/java/tomcat-app/kxgzapp.war user_01@172.16.214.251:/wwwroot/java/tomcat-app/
#scp -P 22033  /wwwroot/java/tomcat-app/kxgzapp.war user_01@172.16.214.252:/wwwroot/java/tomcat-app/
sleep 5

#启动服务器
/wwwroot/java/restart-tomcat.sh app kxgzapp

ssh -p 22033 172.16.214.209
/wwwroot/java/restart-tomcat.sh app kxgzapp
exit

ssh -p 22033 172.16.214.251
/wwwroot/java/restart-tomcat.sh app kxgzapp
exit

ssh -p 22033 172.16.214.252
/wwwroot/java/restart-tomcat.sh app kxgzapp
exit

  1. 对scp.sh文件授予执行权限
chmod 777 *.sh
  1. 最后执行sh文件
./scp.sh

6.tomcat 启动备份

安装 unzip
yum install -y unzip zip

vim restart-tomcat.sh

#!/bin/bash

tomcat_path=/wwwroot/java/tomcat-${1}
tomcat_name=tomcat-${1}
config=/wwwroot/java/config/
war_name=${2}
bak_path=/wwwroot/java/update/bg/

echo "begin get ${tomcat_name} pid"

tomcat8_id=$(ps -ef | grep ${tomcat_name} | grep -v grep | awk '{print $2}')

echo "${tomcat_name} pid:$tomcat8_id"

echo "begin kill ${tomcat_name} pid:$tomcat8_id"

kill -9 $tomcat8_id

sleep 3

echo "kill ${tomcat_name} pid:$tomcat8_id,success"

mv ${tomcat_path}/webapps/${war_name}.war ${bak_path}
	
rm -rf ${tomcat_path}/webapps/${war_name}

echo "remove war name ${war_name}"


mv /wwwroot/java/config/${war_name}/war/*.war ${tomcat_path}/webapps/${war_name}.war

# 解压war包
unzip -oq ${tomcat_path}/webapps/${war_name}.war -d ${tomcat_path}/webapps/${war_name}
#修改配置
cp -r /wwwroot/java/config/${war_name}/config/* ${tomcat_path}/webapps/${war_name}/WEB-INF/classes

sleep 4

#启动tomcat
${tomcat_path}/bin/startup.sh


echo "runing tomcat ..."

tomcat8_id=$(ps -ef | grep ${tomcat_name} | grep -v grep | awk '{print $2}')

echo "now ${tomcat_name} pid:$tomcat8_id"

sleep 4

tail -f ${tomcat_path}/logs/catalina.out

运行脚本

./restart-tomcat.sh app kxgzapp

仅仅杀掉进程可以使用

$ ps -ef | grep pro_name | grep -v grep | awk '{print $2}' | xargs kill -15
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟-要努力

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值