CentOS 7 下 通过shell + expect 实现 scp 文件(目录)传输

scp介绍:

实现终端之间文件的传输,即可以将本地文件发送到远端相应目录下,也可以将远端目录下的文件拷贝到当前目录

SYNOPSIS

     scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

本地到远端:

scp -r filelist[or file] $user@$host:/filelist2

远端到本地

scp -r $user@$host:/filelist /filelist2


下面就来实现文件夹拷贝 本地到远端(代码示例)

<span style="background-color: rgb(255, 0, 0);">start_check.sh</span>
<span style="color:#006600;">#!/bin/sh

#yum -y install expect*
SCP_DIR="/opt/dac/data/attach"
T=0

function CheckDir()
{
        if [ "`ls -A $SCP_DIR`" = "" ]; then
                T=15
                sleep $T
        else
                T=5;
                expect ./expect_scp.exp
                rm -rf $SCP_DIR/*
                sleep $T
        fi
}

while [ 1 ] ; do
        CheckDir
done</span>

<pre name="code" class="plain"><span style="background-color: rgb(255, 0, 0);">expect_scp.exp</span>

 
<pre name="code" class="plain"><span style="color:#660000;">#!/usr/bin/expect -f

set password tips123
set DIR_SCP /opt/dac/data/attach

#upload remote host
spawn scp -r $DIR_SCP root@192.168.2.81:/root/dir_ssh/
set timeout 3
expect {
"yes/no" {send "yes\r";exp_continue}
}
expect "root@192.168.2.81's password:"
set timeout 3
send "$password\r"
set timeout 300
send "exit\r"
expect eof</span>

 写的不多 一点经验 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值