expect实现单台、多台服务器批量scp传输文件

 更新时间:2014年12月31日 11:12:12   投稿:junjie  
这篇文章主要介绍了expect实现单台、多台服务器批量scp传输文件,本文提供了单台传输脚本、多台传输脚本及服务器信息配置文件,需要的朋友可以参考下

今天公司同事要在一台服务器上对另外两台同机房的服务器进行文件传输,两台服务器的文件存放地址一致,密码和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,才能登录服务器),那么请自己修改脚本文件,我比较懒这里就不说得那么详细了.

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

相关文章

  • Shell中关于exit 0的那些坑

    Shell中关于exit 0的那些坑

    在 shell 编程中,需慎用 exit 0,本文主要介绍了Shell中关于exit 0的那些坑,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Shell脚本实现IP地址合法性判断

    Shell脚本实现IP地址合法性判断

    这篇文章主要介绍了Shell脚本实现IP地址合法性判断,本文给出了实现代码和运行代码,需要的朋友可以参考下
    2014-10-10
  • 详解Linux中的awk命令

    详解Linux中的awk命令

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。这篇文章主要介绍了Linux中的awk命令的相关知识,需要的朋友可以参考下
    2019-11-11
  • 一个简单的linux命令 mv

    一个简单的linux命令 mv

    这篇文章主要介绍了一个简单的linux命令mv,mv命令用于移动文件或者将文件改名,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • shell脚本实现数据库表增量同步的流程

    shell脚本实现数据库表增量同步的流程

    这篇文章主要介绍了shell脚本实现数据库表增量同步的流程,流程也很简单,通过获取axt_statistics 库的 zxxt_class 表中id字段的最大id值,具体脚本跟随小编一起看看本文吧
    2021-10-10
  • shell中使用expect命令进行远程执行命令脚本

    shell中使用expect命令进行远程执行命令脚本

    今天小编就为大家分享一篇关于shell中使用expect命令进行远程执行命令脚本,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • nginx日志切割shell脚本

    nginx日志切割shell脚本

    nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件
    2014-03-03
  • Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录

    Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录

    这篇文章主要介绍了Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录,需要的朋友可以参考下
    2015-04-04
  • 一篇教会你写90%的shell脚本(入门小结)

    一篇教会你写90%的shell脚本(入门小结)

    这篇文章主要介绍了一篇教会你写90%的shell脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux进程管理方法介绍

    Linux进程管理方法介绍

    这篇文章介绍了Linux进程管理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论