Linux一鍵分發檔案 應用等

2021-10-06 20:57:51 字數 2092 閱讀 3797

微服務環境部署時,幾十台機器需要部署系統,編寫檔案傳輸指令碼如下.

預設讀取同級目錄下的data_list.conf 傳輸配置檔案

linux需要安裝依賴軟體tcl、expect.

#!/bin/bash

data_list=

"data_list.conf"if[

"$1"

!=""];

then

data_list=

"$1"

fiecho

`date

"+%y-%m-%d %h:%m:%s"

`cat

$data_list

|while

read ip user pass sfile tdir

do#echo "ip is $ip"

#echo "user is $user"

#echo "pass is $pass"

#echo "sfile is $sfile"

#echo "tdir is $tdir"

#echo \"command is : scp -r "$sfile" "$user"@"$ip":"$tdir"\"

#sup_sfile=$(echo -e "$" | awk -f '\\|' '')if[

[$sfile

=~ '|']]

;then

path=

"$"#echo "path is $path"

sup_sfile=

"$(echo -e "$"

|sed

's/|/ /g')"

for s_sfile in

$sup_sfile

do#echo "s_sfile is $path$s_sfile"

/usr/bin/expect -c "

set timeout 3;

spawn ssh -f -o stricthostkeychecking=no "

$user

"@"$ip

" mkdir -p "

$tdir

" expect

\"*ssword:\"

}spawn scp -r "

$path

$s_sfile

" "$user

"@"$ip

":"$tdir

" expect

\"*ssword:\" }"

sleep 1

done

else

sup_sfile=

"$(echo -e "$"

|sed

's/|/ /g')"

for s_sfile in

$sup_sfile

do#echo "s_sfile is $s_sfile"

/usr/bin/expect -c "

set timeout 3;

spawn ssh -f -o stricthostkeychecking=no "

$user

"@"$ip

" mkdir -p "

$tdir

" expect

\"*ssword:\"

}spawn scp -r "

$s_sfile

" "$user

"@"$ip

":"$tdir

" expect

\"*ssword:\" }"

sleep 1

done

fidone

echo

`date

"+%y-%m-%d %h:%m:%s"

`

配置檔案如下 data_list.conf

也可以自行定義多個conf檔案,執行shell時進行指定引數即可

ps:存在空行也無事,會忽略

目標ip 賬號 密碼 原始檔 目標資料夾

其中 原始檔 設定時 可以加 「|」 進行同一資料夾下的多個檔案傳輸

傳輸乙個檔案時 「|」 可加可不加 皆可

使用saltstack分發檔案

我們通過狀態管理檔案實現檔案分發,所有的管理檔案應該放在配置好的工作目錄下,vi etc salt master,開啟master檔案,設定環境配置目錄,我們設定為 srv salt 這樣salt就知道我們的配置管理檔案在什麼地方,就算我們不取消注釋salt也會自動定位在 srv salt下!之後在...

xsync bash rsync非同步分發檔案

前言,rsync 命令詳解,參看 說明 1.下面的指令碼,迴圈直選用乙個 2.指令碼的使用,進入到要分發檔案的目錄,分發目標資料夾targetdir或檔案targetfile,就可以分發到其他機器上 xsync targetdir xsync targetfile 指令碼名稱 xsync.sh bi...

shell指令碼自動分發檔案

transport file.sh bin bash 宣告變數 sourfile echo eval echo cut d f1 despath echo cut d f2 pwd pwd file pwd basename 0 ip file pwd ipfile f rn re ho in us...