scp批量自动远程复制脚本不需要输入密码

来源:互联网 发布:隐马尔可夫 python 编辑:程序博客网 时间:2024/05/29 08:39

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

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

核心代码

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

#!/usr/bin/expect

##############################################

#!/usr/bin/expect################################################Date  :       2016-01-11##Author:       waitig.com##Ver   :       V1.0##Des   :       scp脚本###############################################set timeout 10#使用说明#scp.sh 源路径 目标用户名 目标密码 目标ip 目标路径#[lrange $argv 1 1]表示从bash中获取参数,从1到1的形式,和[lindex $argv n],n从0开始,分别表示第一个,第二个,第三个....参数的区别
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:$tarpathexpect {        "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





原创粉丝点击