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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章