expect實現單台、多台伺服器批量scp傳輸檔案_linux shell

來源:互聯網
上載者:User

今天公司同事要在一台伺服器上對另外兩台同機房的伺服器進行檔案傳輸,兩台伺服器的檔案存放地址一致,密碼和key也一致(我們公司在安全上做得有點變態的),為了效率寫了下面這個指令碼.

1.單台傳輸指令碼

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.多台傳輸指令碼

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.伺服器資訊檔


複製代碼 代碼如下:

cat /root/soft_shell/server_list.conf


格式為:


複製代碼 代碼如下:

ip 使用者名稱 密碼 源檔案 目標檔案地址

ps:以上3個檔案,相信大家都看出來了,都是放在同一檔案夾下面的.我本地測試只用ssh密碼,沒有加上ssh key,如果要用上跟我們公司正式環境一樣的安全方式(ssh密碼+key,才能登入伺服器),那麼請自己修改指令檔,我比較懶這裡就不說得那麼詳細了.

最後來張效果圖吧,免得大家說我指令碼有問題.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.