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版权协议,转载请附上原文出处链接和本声明。