用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
呵呵,有需要的朋友可以用上,顺便提出改进建议。
评论
zzzhc (未验证)
周五, 2008/11/21 - 14:54
Permalink
用lftp不行吗?
用lftp不行吗?
yejr
周五, 2008/11/21 - 15:36
Permalink
木有用过,给个例子
木有用过,给个例子?
MySQL方案、培训、支持
游客 (未验证)
周六, 2014/08/23 - 15:21
Permalink
有用过libexpect的朋友吗?
有用过libexpect的朋友吗?