shell指令碼自動分發檔案

2021-06-19 22:25:05 字數 3385 閱讀 3750

**: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() ')

user=$(sed -n "$1"p $ip_file | awk '')

passwd=$(sed -n "$1"p $ip_file | awk '')

port=$(sed -n "$1"p $ip_file | awk '')

}### ------ 生成配置檔案 ------ ###

###生成ipfile檔案

#if [ ! -f $ip_file ]

then

cat > ipfile << 'eof'

ip user password port

eoffi

###生成expect.sh指令碼

#if [ ! -f remote2local_expect.sh ]

then

cat > remote2local_expect.sh << 'eof'

#!/usr/bin/expect -f

set user [lindex $argv 0]

set ip [lindex $argv 1]

set password [lindex $argv 2]

set des_path [lindex $argv 3]

set sou_file [lindex $argv 4]

set port [lindex $argv 5]

set timeout 10

spawn rsync -zvzp -e "ssh -p $" $@$:$ $des_path

expect

"password:"

" "

}interact

eof##第二個expect##

cat > local2remote_expect.sh << 'eof'

#!/usr/bin/expect -f

set user [lindex $argv 0]

set ip [lindex $argv 1]

set password [lindex $argv 2]

set des_path [lindex $argv 3]

set sou_file [lindex $argv 4]

set port [lindex $argv 5]

set timeout 10

spawn rsync -zvzp -e "ssh -p $" $ $@$:$des_path

expect

"password:"

" "

}interact

eof dos2unix remote2local_expect.sh

dos2unix local2remote_expect.sh

chmod 755 remote2local_expect.sh

chmod 755 local2remote_expect.sh

fi###生成expect完成###

### ------ 生成配置檔案結束 ------ ###

#友好提示

#use_info()

if [ -z $1 ];then

use_info

exit

fi##

#宣告file_recondn變數

f_rn

#######

#該指令碼的第乙個引數,表示是remote2local或local2remote

mark="$1"

#if [[ "$mark" =~ ^(-r2l|-r2l|-remote2local|-r|-r)$ ]]

then

for i in `seq 2 $file_recordn`

do re_ho_in $i

$pwd/remote2local_expect.sh $user $ip $passwd $despath "$sourfile" $port

# echo $user $ip $passwd "$despath" "$sourfile" $port

done

elif [[ "$mark" =~ ^(-l2r|-local2remote|-l|-l)$ ]]

then

for i in `seq 2 $file_recordn`

do re_ho_in $i

$pwd/local2remote_expect.sh $user $ip $passwd $despath $sourfile $port

#echo "$sourfile" $user $ip $passwd $despath

done

else

use_info

fi

使用方法:

1、執行指令碼先生成配置檔案,配置檔案共3個

ipfile

local2remote_expect.sh

remote2local_expect.sh

2、配置這三個檔案

配置ipfile

local2remote_expect.sh 和 remote2local_expect.sh 不需要任何配置。

3、傳輸檔案:從遠端主機傳輸到本地

上面兩條資訊,因為主機10.2.4.86上的檔案與70上的相同,已經由86傳輸到本地,故只出現乙個rsync的簡短描述資訊。

傳輸檔案同上,這裡使用了乙個萬用字元*

從本地上傳到遠端伺服器

ok了,可以用它來從遠端linux伺服器上備份日誌資料等。我的備份環境是這樣:我們需要每月備份平台日誌,備份到本地的windows備份機上,我使用cygwin來執行這個指令碼從遠端linux伺服器每個月執行一次來備份日誌。

shell 指令碼 自動批量分發檔案

1.安裝expect yum y install expect 2.建立iplist.txt檔案 要分發的ip位址 192.168.116.167 192.168.116.168 3.建立user.txt 裡面包含密碼 123456 123456 4.建立指令碼 test.sh,test.log t...

shell指令碼自動批量分發檔案

安裝expect yum y install expect 建立iplist.txt檔案 要分發的ip位址 192.168.20.181 192.168.20.182 建立user.txt 裡面包含密碼 123456 123456 建立指令碼 test.sh,test.log test.sh bin...

使用saltstack分發檔案

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