批量自动scp远程复制脚本

linux脚本 waitig 3998℃ 百度已收录 0评论

在工作中,经常会遇到远程复制的情况,使用scp命令就可以实现远程复制。但是每次执行scp都需要输入密码,所以并不是很方便。今天就给大家分享一个可以批量自动执行scp命令的脚本,大家可以根据需要修改,来使自己的工作更加方便。

本脚本主要使用的是expect脚本。expect用于自动化地执行linux环境下的命令行交互任务,例如scp、ssh之类需要用户手动输入密码然后确认的任务。有了这个工具,定义在scp过程中可能遇到的情况,然后编写相应的处理语句,就可以自动地完成scp操作了。关于此命令的详细使用我会再以后的文章中介绍,今天主要来介绍下它的一个简单应用–自动批量远程复制功能。

核心代码

首先将scp命令封装在一个脚本中,其代码如下:

#!/usr/bin/expect
##############################################
##Date  :       2016-01-11
##Author:       waitig.com
##Ver   :       V1.0
##Des   :       scp脚本
###############################################
set timeout 10
#使用说明
#scp.sh 源路径 目标用户名 目标密码 目标ip 目标路径
set user [lrange $argv 1 1]
set pwd [lrange $argv 2 2]
set srcpath [lrange $argv 0 0]
set tarpath [lrange $argv 4 4]
set ip [lrange $argv 3 3]
if { $argc != 5 } {
puts "请输入正确的参数"
puts "正确格式:scp.sh 源路径 目标用户名 目标密码 目标ip 目标路径"
exit 1 } spawn scp $srcpath $user@$ip:$tarpath expect { "yes/no" {send "yes\r";exp_continue} "password:" {send "$pwd\r"} } puts "scp $srcpath $user@$ip:$tarpath" expect "100%"

调用脚本

利用上面的脚本,外层在根据需要封装一层调用脚本,即可实现远程自动复制功能。

调用举例:

#!/usr/bin/bash
##############################################
##Date  :       2016-01-11
##Author:       Liu Shuai
##Ver   :       V1.0
##Des   :   批量自动部署
###############################################
USR="test"
PWD="test"
SRCPATH="/test/"
TARPATH="/test/"

for((i=86;i<92;i++));do
./scp.sh ${SRCPATH} ${USR} ${PWD} 192.168.9.${i} ${TARPATH}
done

使用的时候,将调用脚本修改成自己的,然后就可以实现批量自动远程复制的功能了。


本文由【waitig】发表在等英博客
本文固定链接:批量自动scp远程复制脚本
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (2)分享 (0)