Linux系统中,利用expect实现scp文件传输

Linux系统中,利用expect实现scp文件传输

一、环境准备

①查看expect命令是否存在

在这里插入图片描述

②expect命令不存在,开始安装

yum install expect

在这里插入图片描述

二、核心脚本

expect(注意文件无后缀):

#!/usr/bin/expect

set timeout 3600
set host [lindex $argv 0]
set port [lindex $argv 1]
set username [lindex $argv 2]
set password [lindex $argv 3]
set src_file [lindex $argv 4]
set dest_file [lindex $argv 5]

spawn scp -P $port -r $src_file $username@$host:$dest_file

expect {
 "(yes/no)?" {
   send "yes\n"
   expect "*assword:" { send "$password\n"}
  }
  "*assword:" {
   send "$password\n"
  }
}

expect "100%"
expect eof

#第二版本
#expect "password"
#send "$password\r"
#interact

expectInvoke.sh(执行本机操作的 shell 脚本):

#!/bin/sh

# 动态获取文件名(可忽略)
# radioWavName=$(cat /home/zhouziyu/Work/ShellUtil/radioWavName.txt)
# src_dir=/home/zhouziyu/Work/ShellUtil/$radioWavName

src_dir=/home/zhouziyu/Work/ShellUtil/test.log
dest_dir=/home/zhouziyu/Work/ShellUtil
host=192.168.10.129
port=22
username=zhouziyu
password=123456

# 将远程服务器上的文件拷贝到本机
/home/zhouziyu/Work/ShellUtil/expect $host $port $username $password $src_dir $dest_dir

echo "end"

开始执行(注意文件执行权限):
在这里插入图片描述
在这里插入图片描述


总结

每天一个提升小技巧!!!


版权声明:本文为weixin_43630831原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。