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

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

二 服务器免密登录

四台集群服务器

服务器 IP
A 47.110.129.242
B 172.16.214.209
C 172.16.214.251
D 172.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  [email protected]:/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 [email protected]:/wwwroot/java/
scp -r -P 22033  /wwwroot/java/config [email protected]:/wwwroot/java/
scp -r -P 22033  /wwwroot/java/config [email protected]:/wwwroot/java/

#scp -P 22033  /wwwroot/java/tomcat-app/kxgzapp.war [email protected]:/wwwroot/java/tomcat-app/
#scp -P 22033  /wwwroot/java/tomcat-app/kxgzapp.war [email protected]:/wwwroot/java/tomcat-app/
#scp -P 22033  /wwwroot/java/tomcat-app/kxgzapp.war [email protected]:/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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章