使用expect实现linux交互脚本scp、sftp操作,远程收发文件使用

1、except的安装:

使用yum源可以自动解决依赖

yum -y install expect


2、except推scp:

SERVERIP:替换为你的远程服务器ip

SSHPORT:替换为你的远程服务器ssh端口

文件:替换为你的本机真实文件路径

/data/文件:替换为你保存到远程服务器的路径

PASSWORD:替换为你的远程服务器ssh密码

expect <<-EOF
set timeout 7200
# 推jar包
spawn scp -P SSHPORT 文件 root@SERVERIP:/data/文件
expect {
  "*yes/no" { send "yes\r"; exp_continue }
  "*password" { send "PASSWORD\r" }
}
expect eof
wait
# 推dist.zip包
spawn scp -P SSHPORT 文件 root@SERVERIP:/data/文件
expect {
  "*yes/no" { send "yes\r"; exp_continue }
  "*password" { send "PASSWORD\r" }
}
expect eof
EOF


3、except拉sftp:

SERVERIP:替换为你的源文件服务器ip

SSHPORT:替换为你的源文件服务器ssh端口

PASSWORD:替换为你的远程服务器ssh密码

文件:替换为你的源文件服务器真实文件路径

/data/文件:替换为你本机服务器的保存路径

expect <<-EOF
set timeout 7200
# sftp连接sdtest
spawn sftp -oPort=SSHPORT root@SERVERIP
expect {
  "*yes/no" { send "yes\r"; exp_continue }
  "*password" { send "PASSWORD\r" }
}
# 拉各个文件
expect "sftp>"
send "get 文件1 /data/文件1\r"
expect "sftp>"
send "get 文件2 /data/文件2\r"
expect eof
EOF


4、如何使用

将对应脚本保存到本机创建一个.sh文件,并赋予执行权限:

例如:

vim push_files.sh

粘贴脚本并保存退出

chmod +x push_files.sh

执行时:

sh push_files.sh