ssl/scp等自动连接处理

本文介绍如何利用Expect脚本实现SSH方式下文件的自动发送与接收,通过具体示例展示了如何配置脚本来自动处理登录及文件传输过程。

在完成交叉编译OPENSSH后,又有一个需求:要求自动登录服务器,并从服务器传输文件。如何处理呢?

这里要用到expect,分别实现一个发送和接收程序。参考此程序可以实现ftp/ssh等需要用户输入的场景。

server_send.sh

#!/usr/bin/expect -f
set password 123456 #变量赋值

set master_file [lindex $argv 0] #将第一个输入参数赋值给master_file
set slave_ip [lindex $argv 1]    #将第二个输入参数赋值给slave_ip
set slave_file [lindex $argv 2]  #将第三个输入参数赋值给slave_file

#send to stb
spawn scp -r $master_file root@$slave_ip:$slave_file #spawn启动一下进程来处理scp命令
set timeout 300                  #设置超时300s
expect "*password:"              #如果屏幕打印中有“*password:”,则发送密码
set timeout 300
send "$password\r"               #发送密码,这样免去用户手动输入,实现自动化
set timeout 300

send "exit\r"
expect eof                       #等待进行结束

server_recv.sh

recv与send本质相同,只是scp命令拷贝的方向不一致。

root@inspur:/home/liufei/github/shell/expect# cat server_recv.sh 
#!/usr/bin/expect -f
set password 123456

set master_file [lindex $argv 0]
set slave_ip [lindex $argv 1]
set slave_file [lindex $argv 2]

spawn scp -r root@$slave_ip:$slave_file $master_file
set timeout 300 
#expect "root@10.180.89.199's password:"
expect "*password:"
set timeout 300 
send "$password\r"
set timeout 300 

send "exit\r"
expect eof
root@inspur:/home/liufei/github/shell/expect# 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值