expect

本文介绍了一种利用Expect脚本自动完成SCP命令文件传输的方法,解决了因需频繁输入密码而导致的操作不便问题。通过设置变量存储密码并使用spawn启动SCP进程,结合expect监听特定提示符并响应,实现了文件的自动化传输。

今天打算将一台加载机上的文件按文件名发送到远程加载机NAS上的不同目录。由于以后还会有多次发送,所以就想写个脚本,用scp传输。但终端scp传输需要输入输入远程加载机的密码。所以找了下方法,一种是通过公钥认证授权的方式,因为我没有远程机器所有的权限而放弃。另一种是用expect的方式:

截取一部分代码供记录参考:

#!/usr/bin/expect -f
set password bdpguest1221
spawn bash -c "scp sjh*and11 bdpguest@10.230.17.1:/BDPNAS/BDPDATA/OUT/q1/BEJ11/BDP"
set timeout 3
expect {
"Are you sure you want to continue connecting (yes/no)?" {send "yes\r";exp_continue}
}
expect "Password:"
set timeout 3
send "$password\r"
set timeout -1

spawn bash -c "scp sjh*and02 bdpguest@10.230.17.1:/BDPNAS/BDPDATA/OUT/q1/TIJ02/BDP"
set timeout 3
expect {
"Are you sure you want to continue connecting (yes/no)?" {send "yes\r";exp_continue}
}
expect "Password:"
set timeout 3
send "$password\r"
set timeout -1                                       %-1表示直到文件传完再执行下一步。
expect eof

  

转载于:https://www.cnblogs.com/yzymickey/p/6052202.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值