expect与scp结合批量处理文件

#!/bin/bash

echo "-----------dear lina,let's go----------"

n=0
i=0
j=0
for line in $(cat src_to_dst.txt)
do
        if [ $[$n%2] -eq 0 ]
        then
                src[$i]=$line
                i=$[$i+1]
        else
                dst[$j]=$line
                j=$[$j+1]
        fi
        n=$[$n+1]
done

#echo "$i, $j"


fun_ssh_remote(){
        echo "开始登陆服务器:$1"
        src=$1
        dst=$2
        host=$3
        password=$4
        #echo "$1 $2 $3 $4"
        echo “开始复制文件:源路径:$src,目的路径:$host:$dst”
        /bin/expect <<-EOF      
        spawn scp -r $src $host:$dst
        set timeout 300
        expect {
                "*$host's password:*" { send "$password\r" }
        }
        set timeout 300
        send "exit\r"   
        expect eof
        EOF
        echo "文件:$src传输完毕"
        }


cat host_addr.txt | while read line
do
        ip=`echo "${line}" |awk -F ' ' '{print $1}'`
        password=`echo "${line}" |awk -F ' ' '{print $2}'`
        for count in `seq 1 $i`
        do
                echo "$count ${src[$count-1]} ${dst[$count-1]} $ip $password"
                fun_ssh_remote ${src[$count-1]} ${dst[$count-1]} $ip $password
        done
done


echo "-----文件处理结束-------"    

host_addr.txt的格式为:hostname@ip(空格)密码
如:
shimai@127.0.0.1 12345678
src_to_dst.txt的格式为:源文件绝对路径(空格)复制后文件的绝对路径
如:
/root/1.txt /Users/shimai/Documents
/root/2.txt /Users/shimai/Documents

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值