今天公司同事要在一臺(tái)服務(wù)器上對(duì)另外兩臺(tái)同機(jī)房的服務(wù)器進(jìn)行文件傳輸,兩臺(tái)服務(wù)器的文件存放地址一致,密碼和key也一致(我們公司在安全上做得有點(diǎn)變態(tài)的),為了效率寫(xiě)了下面這個(gè)腳本.
1.單臺(tái)傳輸腳本
cat /root/soft_shell/allscp.sh
復(fù)制代碼 代碼如下:
#!/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
復(fù)制代碼 代碼如下:
#!/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ù)器信息文件
復(fù)制代碼 代碼如下:
cat /root/soft_shell/server_list.conf
格式為:
復(fù)制代碼 代碼如下:
ip 用戶(hù)名 密碼 源文件 目標(biāo)文件地址
ps:以上3個(gè)文件,相信大家都看出來(lái)了,都是放在同一文件夾下面的.我本地測(cè)試只用ssh密碼,沒(méi)有加上ssh key,如果要用上跟我們公司正式環(huán)境一樣的安全方式(ssh密碼+key,才能登錄服務(wù)器),那么請(qǐng)自己修改腳本文件,我比較懶這里就不說(shuō)得那么詳細(xì)了.
最后來(lái)張效果圖吧,免得大家說(shuō)我腳本有問(wèn)題.
您可能感興趣的文章:- 魔獸世界item.scp文件參數(shù)說(shuō)明
- shell結(jié)合expect寫(xiě)的批量scp腳本工具
- ssh,scp自動(dòng)登陸的實(shí)現(xiàn)方法
- bash scp command not found的解決方法
- 使用scp獲取遠(yuǎn)程linux服務(wù)器上的文件 linux遠(yuǎn)程拷貝文件
- linux使用scp命令備份文件 scp拷貝文件
- linux拷貝命令之高級(jí)拷貝scp命令詳解
- Windwos下使用winscp和批處理實(shí)現(xiàn)通過(guò)SSH端口上傳文件到Linux服務(wù)器上
- scp命令詳解(全)