shell实现scp批量下发文件

简介:

本文系统Centos6.0


Expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;


1、安装

1
yum install expect expect-devel -y

2、编写Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/expect
if  {$argc <  2 } {
         send_user  "usage: $argv0 src_file username ip dest_file password\n"
exit
}
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  -r $src_file $username@$host_ip:$dest_file
expect {
         "(yes/no)?"
                 {
                         send  "yes\n"
                         expect  "*assword:"  {send  "$password\n" }
                 }
         "*assword:"
                 {
                         send  "$password\n"
                 }
}
expect  "100%"
expect eof

3、用法实例:

1
[root@master ~]# ./allscp.sh install.log root  192.168 . 100.145  /tmp/  123456

215942910.jpg

你也可以使用其他帐号;

上面实现了对单台机器复制;

4、批量服务器复制

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
               
   src_file=$ 1
   username=$ 2
   host_list=$ 3
   dest_file=$ 4
   password=$ 5
   cat $host_list |  while  read line
   do
       host_ip=`echo $line | awk  '{print $1}' `
       ./allscp.sh $src_file $username $host_ip $dest_file $password
   done

用法实例:

221023301.jpg

希望大家有更好的介意~


本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1325006


相关文章
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
1556 1
|
Shell
Shell 文件包含
10月更文挑战第5天
175 4
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
347 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
Shell Linux 网络安全
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
308 3
|
Shell Linux 开发工具
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
|
Shell Linux Perl
在Linux中,编写一个shell脚本,用于统计指定目录下所有文件的行数。
在Linux中,编写一个shell脚本,用于统计指定目录下所有文件的行数。
|
Shell Linux
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
179 0
|
机器学习/深度学习 Shell Linux
linux shell脚本判断文件或文件夹是否存在循环操作
linux shell脚本判断文件或文件夹是否存在循环操作
685 0
|
存储 网络协议 Shell
第十章 Shell编程时常用的系统文件
第十章 Shell编程时常用的系统文件