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

阅读更多
文章标签: expect scp shell 
个人分类: shell
上一篇机器学习(二)
下一篇Shell——乱搞
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭