expect實(shí)現(xiàn)單臺(tái)、多臺(tái)服務(wù)器批量scp傳輸文件
今天公司同事要在一臺(tái)服務(wù)器上對(duì)另外兩臺(tái)同機(jī)房的服務(wù)器進(jìn)行文件傳輸,兩臺(tái)服務(wù)器的文件存放地址一致,密碼和key也一致(我們公司在安全上做得有點(diǎn)變態(tài)的),為了效率寫了下面這個(gè)腳本.
1.單臺(tái)傳輸腳本
cat /root/soft_shell/allscp.sh
#!/usr/bin/expect
if {$argc < 2} {
send_user "usage: $argv0 src_file username ip dest_file password\n"
exit
}
##set key [lindex $argv 0]
set src_file [lindex $argv 0]
set username [lindex $argv 1]
set host_ip [lindex $argv 2]
set dest_file [lindex $argv 3]
set password [lindex $argv 4]
##spawn scp -i $key $src_file $username@$host_ip:$dest_file
spawn scp $src_file $username@$host_ip:$dest_file
expect {
"(yes/no)?"
{
send "yes\n"
expect "password:" {send "$password\n"}
}
"password:"
{
send "$password\n"
}
}
expect "100%"
expect eof
2.多臺(tái)傳輸腳本
cat /root/soft_shell/mainscp.sh
#!/bin/bash
host_list="server_list.conf"
cat $host_list | while read line
do
host_ip=`echo $line|awk '{print $1}'`
username=`echo $line|awk '{print $2}'`
password=`echo $line|awk '{print $3}'`
src_file=`echo $line|awk '{print $4}'`
dest_file=`echo $line|awk '{print $5}'`
##key=`echo $line|awk '{print $6}'`
##./allscp.sh $key $src_file $username $host_ip $dest_file $password
./allscp.sh $src_file $username $host_ip $dest_file $password
done
3.服務(wù)器信息文件
cat /root/soft_shell/server_list.conf
格式為:
ip 用戶名 密碼 源文件 目標(biāo)文件地址
ps:以上3個(gè)文件,相信大家都看出來了,都是放在同一文件夾下面的.我本地測(cè)試只用ssh密碼,沒有加上ssh key,如果要用上跟我們公司正式環(huán)境一樣的安全方式(ssh密碼+key,才能登錄服務(wù)器),那么請(qǐng)自己修改腳本文件,我比較懶這里就不說得那么詳細(xì)了.
最后來張效果圖吧,免得大家說我腳本有問題.
相關(guān)文章
shell腳本定時(shí)備份MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)并保留指定時(shí)間
這篇文章主要介紹了shell腳本定時(shí)備份MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)并保留指定時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09淺談安裝ORACLE時(shí)在Linux上設(shè)置內(nèi)核參數(shù)的含義
下面小編就為大家?guī)硪黄獪\談安裝ORACLE時(shí)在Linux上設(shè)置內(nèi)核參數(shù)的含義。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03一天一個(gè)shell命令 linux文本內(nèi)容操作系列-sed命令詳解
這篇文章主要介紹了一天一個(gè)shell命令 linux文本內(nèi)容操作系列-sed命令詳解,需要的朋友可以參考下2016-06-06