shell脚本实现文件远程拷贝scp

本文介绍了如何通过shell脚本配合scp命令,实现从A服务器到B服务器的cc.jar文件的远程拷贝。主要内容包括脚本编写、参数化目标服务器IP、利用expect解决交互式认证问题以及安装和使用expect的步骤。

场景:将A服务器上面的cc.jar包,复制到B服务器上面:

实现方法1:

1、写脚本cp.sh:

内容为:

#!/bin/bash

ip=$1  (注释:这里参数化了目标服务器的ip,执行脚本时候将参数加在后面)

./scp.exp  ./cc.jar  root@$1:/root/tools

写完后给权限:chmod 777 cp.sh

执行命令为:./cp.sh  10.179.23.43 (目标地址是以参数传进去的)

这个时候发现执行出错,做步骤2:

2、保证服务器已经安装了expect,安装命令为:

yum install expect

新建文件scp.exp文件,内容为:

#!/usr/bin/expect 
set timeout 20 
 
if { [llength $argv] < 2} { 
    puts "Usage:" 
    puts "$argv0 local_file remote_path" 
    exit 1 
} 
 
set local_file [lindex $argv 0] 
set remote_path [lindex $argv 1] 
set passwd 目标服务器的密码
 
set passwderror 0 
 
spawn scp $local_file $remote_path 
 
expect { 
    "*assword:*" { 
        if { $passwderror == 1 } { 
        puts "passwd is error" 
        exit 2 
        } 
        set timeout 1000 
        set passwderror 1 
        send "$passwd\r" 
        exp_continue 
    } 
    "*es/no)?*" { 
        send "yes\r" 
        exp_continue 
    } 
    timeout { 
        puts "connect is timeout" 
        exit 3 
    } 
} 

修改权限:chmod 777  scp.exp

3、再次执行脚本,发现copy成功。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值