linux中expect批量scp传输文件

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,才能登录服务器),那么请自己修改脚本文件,我比较懒这里就不说得那么详细了.

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

时间: 2024-09-20 14:49:07

linux中expect批量scp传输文件的相关文章

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

今天公司同事要在一台服务器上对另外两台同机房的服务器进行文件传输,两台服务器的文件存放地址一致,密码和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

linux中expect批量修改用户密码的脚本

1.使用expect前,需要先安装两个rpm包,  代码如下 复制代码 # rpm -ihv expect-5.43.0-8.el5.i386.rpm # rpm -ihv expect-devel-5.43.0-8.el5.i386.rpm 2.批量修改密码的脚本.  代码如下 复制代码 #!/usr/bin/expect #yemaosheng.com if { $argc<2 } {     send_user "usage: $argv0 <host file> <

如何在Linux中合并多个pdf文件?

风信网(ithov.com)原创文章:在Linux中进行批量处理pdf文件,我们需要将多个pdf文件合并成一个文件,我们可以使用以下命令来完成: [root@localhost www]#&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf ithov1.pdf ithov2.pdf ithov

如何在Linux中压缩及解压缩.bz2文件

对文件进行压缩,可以通过使用较少的字节对文件中的数据进行编码来显著地减小文件的大小,并且在跨网络的文件的备份和传送时很有用. 另一方面,解压文件意味着将文件中的数据恢复到初始状态. Linux 中有几个文件压缩和解压缩工具,比如gzip.7-zip.Lrzip.PeaZip 等等. 本篇教程中,我们将介绍如何在 Linux 中使用 bzip2 工具压缩及解压缩.bz2文件. bzip2 是一个非常有名的压缩工具,并且在大多数主流 Linux 发行版上都有,你可以在你的发行版上用合适的命令来安装它

Linux中利用两个现存文件,生成一个新的文件

Linux中利用两个现存文件,生成一个新的文件的方法 前提条件:每个文件中不得有重复行 1. 取出两个文件的并集(重复的行只保留一份) cat file1 file2 | sort | uniq 2. 取出两个文件的交集(只留下同时存在于两个文件中的文件) cat file1 file2 | sort | uniq -d 3. 删除交集,留下其他的行 cat file1 file2 | sort | uniq –u

redhat linux中如何播放mp3音乐文件?

redhat linux中如何播放mp3音乐文件? 自带的xmms 不能播放MP3(无声),要安装一个rpm 包: rpm -ivh xmms-mp3-1.2.7-13.p.i386.rpm 打开xmms,ctl-p,在font 栏中先在上半部的小框内打勾,再选择"fixed(misc) gbk-0 13"号字体即可显示中文歌曲名. 在音频输出插件中选择 "开放音频系统驱动程序1.2.7 [lioOSS.so],即可正常播放MP3文件.

Linux 中清空或删除大文件内容的五种方法_Linux

在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何Linux命令行编辑器 去打开这些文件.那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法. 注意: 由于再Linux中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件.清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误. 提示:在下面的示例中,我们将使用名为 access.log 的文件来作为示例样本. 1. 通过重定向到 Nul

fdupes:Linux 中查找并删除重复文件的命令行工具

对于大多数计算机用户而言,查找并替换重复的文件是一个常见的需求.查找并移除重复文件真是一项令人不胜其烦的工作,它耗时又耗力.但如果你的机器上跑着GNU/Linux,那么查找重复文件会变得十分简单,这多亏了fdupes工具. fdupes--在Linux中查找并删除重复文件 fdupes是啥东东? fdupes是Linux下的一个工具,它由Adrian Lopez用C编程语言编写并基于MIT许可证发行,该应用程序可以在指定的目录及子目录中查找重复的文件.fdupes通过对比文件的MD5签名,以及逐

[20131226]linux下使用pigz高效传输文件.txt

[20131226]linux下使用pigz高效传输文件.txt http://zlib.net/pigz/ pigz, which stands for parallel implementation of gzip, is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data. pigz was