微服務環境部署時,幾十台機器需要部署系統,編寫檔案傳輸指令碼如下.
預設讀取同級目錄下的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...