linux中expected_linux中expect批量scp传输文件

更新时间:2019-06-08    来源:linux    手机版     字体:

【www.bbyears.com--linux】

1.单台传输脚本

 代码如下 cat /root/soft_shell/allscp.sh
#!/usr/bin/expect
if {$argc < 2} {
        send_user "usage: $argv0 src_file username ip dest_file passwordn"
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 "yesn"
                        expect "password:" {send "$passwordn"}
                }
        "password:"
                {
                        send "$passwordn"
                }
}
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,才能登录服务器),那么请自己修改脚本文件,我比较懒这里就不说得那么详细了.

最后来张效果图吧,免得大家说我脚本有问题.

linux中expect批量scp传输文件

本文来源:http://www.bbyears.com/caozuoxitong/53850.html