linux跨服務(wù)器復(fù)制文件方式(scp含腳本批量復(fù)制)
前言
作為一名開(kāi)發(fā),也需要干運(yùn)維的工作,有時(shí)需要將一個(gè)文件(jar包)批量拷貝到多臺(tái) Linux 服務(wù)器上。
如果逐臺(tái)scp命令拷貝,不僅需要更換ip,每次還需要輸入機(jī)器密碼,效率比較低下。
為提高效率,通過(guò)腳本方式實(shí)現(xiàn)將文件從一臺(tái) Linux 主機(jī)批量拷貝到多臺(tái)服務(wù)器,以下為實(shí)現(xiàn)方法。
1.純命令復(fù)制方式
1.1 單個(gè)文件復(fù)制
scp /home/xxyy/manageweb/xxyy-web.jar xxyy@192.168.1.180:/home/xxyy/manageweb/bak

1.2 文件夾復(fù)制
加上 -r 即可
scp -r demoDir/ root@192.168.0.180:/opt/soft/
2. 腳本方式批量分發(fā)
2.1 創(chuàng)建腳本文件 scp.sh
#!/bin/bash
echo "拷貝情況如下:" > test.log
n=`cat demoIplist.txt | wc -l` #分發(fā)的ip數(shù)量
fileName=demo-web.jar #分發(fā)文件名
echo "即將分發(fā)的文件:$fileName"
for ((i=1; i <= $n; i++))
do
passwd=`cat demoPassword.txt | head -$i | tail -1`
ip=`cat demoIplist.txt | head -$i | tail -1`
echo $ip
##自動(dòng)交互
expect <<EOF
spawn scp $fileName xxyyzz@$ip:/home/xxyyzz/manageweb/bak/
expect "yes/no" {send "yes\n;exp_untinue"}
expect "password" {send "$passwd\n"}
expect eof
EOF
if [ $? -eq 0 ];then
echo "$ip:成功" >>demoScpLog.log
echo "$ip:成功"
else
echo "$ip:失敗" >>demoScpLog.log
echo "$ip:失敗"
fi
done
echo "復(fù)制完成!!!"
腳本解析:
- 1.循環(huán)執(zhí)行scp命令
- 2.循環(huán)切換demoIplist.txt中的目標(biāo)ip
- 3.循環(huán)輸入demoPassword.txt中的密碼
- 4.傳輸成功或失敗,均分別打印到控制臺(tái)和日志
2.2 創(chuàng)建分發(fā)目標(biāo)機(jī)器ip文件 demoIplist.txt
腳本循環(huán)讀取時(shí),會(huì)受換行符影響,需要注意刪除多余空行。
192.168.1.180192.168.1.179
2.3 創(chuàng)建分發(fā)目標(biāo)機(jī)器password文件 demoPassword.txt
由于生產(chǎn)上,不能設(shè)置免密傳輸,所以需要設(shè)置密碼。另外,如果密碼含有特殊字符,腳本將執(zhí)行失敗。
lC1yM51Dqxu7eq5Y13mUx1Uq6buG45mJ
2.4 執(zhí)行.sh文件
打印如下:

如上,即為腳本分發(fā)文件的方式。另外也可將文件名設(shè)置成文件可編輯的方式,會(huì)更加靈活,此處文件名固定方式就夠用了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
wamp2.2e 64位 curl 開(kāi)啟不了的解決辦法
這篇文章主要介紹了wamp2.2e 64位 curl 開(kāi)啟不了的解決辦法,需要的朋友可以參考下2014-12-12
詳解Linux內(nèi)核內(nèi)存管理架構(gòu)
這篇文章給大家分享了關(guān)于Linux內(nèi)核內(nèi)存管理架構(gòu)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友參考學(xué)習(xí)下。2018-08-08
Linux啟動(dòng)過(guò)程分析和常見(jiàn)錯(cuò)誤匯總
這篇文章介紹了Linux系統(tǒng)的引導(dǎo)過(guò)程、系統(tǒng)初始化進(jìn)程及文件、MBR扇區(qū)故障處理、GRUB引導(dǎo)故障處理、服務(wù)控制及優(yōu)化啟動(dòng)過(guò)程等內(nèi)容2025-04-04
Centos7開(kāi)機(jī)啟動(dòng)自己的腳本的方法
本篇文章主要介紹了Centos7開(kāi)機(jī)啟動(dòng)自己的腳本的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Apache?SeaTunnel實(shí)現(xiàn)?非CDC數(shù)據(jù)抽取實(shí)踐記錄
這篇文章主要介紹了Apache?SeaTunnel實(shí)現(xiàn)?非CDC數(shù)據(jù)抽取實(shí)踐,主要介紹SeaTunnel?1.X在交管行業(yè)中的應(yīng)用,以及其中如何實(shí)現(xiàn)從Oracle數(shù)據(jù)庫(kù)把數(shù)據(jù)增量導(dǎo)入數(shù)倉(cāng)這樣一個(gè)具體的場(chǎng)景,需要的朋友可以參考下2022-05-05
Linux 單個(gè)tomcat多實(shí)例部署shell腳本詳解
這篇文章主要介紹了Linux 單個(gè)tomcat多實(shí)例部署shell腳本詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02

