用expect模拟sftp

简介:
伏笔:server端是基于windows的server-u,启用了sftp,并不是标准的sftp,因此无法用ssh的key信任方式直接登录。为了节约人工,无奈之下,采用expect来解决问题。下面是例子:
#!/usr/bin/expect
##
## 用expect模拟sftp上传文件
## created by yejr(imysql AT imysql.cn),2008/11/20
##
#取得传递参数,构造变量
set DT [lindex $argv 0]
set NU [lindex $argv 1]
set ftp_lcd "/dbbak/$DT/$NU"
#查看本地文件
send "ls -la $ftp_lcd\r"
#发送命令
send "cd $ftp_lcd\r"
#发起sftp
spawn sftp yejr@192.168.0.84
expect "yejr@192.168.0.84's password:"
#发送密码
send "abccba"
expect "sftp>"
#设定lcd
send "lcd $ftp_lcd\r"
expect "sftp>"
#上传文件,这里不知为何无法使用mput
send "put $ftp_lcd/dbbak*$DT*.sql.gz.md5\r"
expect "sftp>"
send "put $ftp_lcd/dbbak*$DT*.sql.gz\r"
expect "sftp>"
#列文件,确认大小没问题
send "ls -la\r"
expect "sftp>"
#bye bye :)
send "bye\r"
interact
呵呵,有需要的朋友可以用上,顺便提出改进建议。


本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/308849,如需转载请自行联系原作者
相关文章
|
Shell 网络安全 Perl
Expect实现SSH免交互执行命令
Expect实现SSH免交互执行命令
155 1
|
网络安全 数据库 数据安全/隐私保护
Expect远程ssh登录主机执行命令
Expect是一个命令行工具,它可以自动化交互式任务(如SSH登录、FTP传输等)。 Expect通过模拟用户输入,识别应用程序输出,实现自动化交互式任务的自动化。
498 0
|
网络安全 数据安全/隐私保护 Perl
|
Linux 数据安全/隐私保护 网络安全