为了结合sftp做自动上传(http://www.linuxidc.com/Linux/2014-03/97978.htm),引用了lftp工具。
#yum install lftp 安装完毕。。 lftp -u $USERNAME,$PASSWORD sftp://$HOST <<EOF cd $SFTPBACKUP put $BACKUP/$DataBakName bye EOF
按照上面的格式进行登录,居然报错了。 [root@just .ssh]# lftp -u qujun,qsc123 sftp://192.168.1.104 lftp qujun@192.168.1.104:~> ls *** buffer overflow detected ***: lftp terminated ======= Backtrace: ========= /lib/libc.so.6(__fortify_fail+0x4d)[0xe3bf8d] /lib/libc.so.6(+0xf6fca)[0xe39fca] /lib/libc.so.6(+0xf66f8)[0xe396f8] /lib/libc.so.6(_IO_default_xsputn+0x13c)[0xdb02cc] /lib/libc.so.6(_IO_vfprintf+0x158f)[0xd833af] /lib/libc.so.6(__vsprintf_chk+0xa7)[0xe397a7]
突出一个囧,写入了脚本再执行也有同样的错误,谷歌之貌似红帽论坛也没有人回答。。 正在考虑要不要放弃这种认证方式的时候,突然冒出一种更直接的方式: 使用-c参数
lftp -c 'get sftp://qujun:qsc123@192.168.1.104:22/c/users/qujun/1.txt'
居然成功了。。好吧,下一步就是测试crontab中的使用了,看到各大论坛的反馈貌似在定时任务中并不太好用,调试的路还很长啊。。
附录:lftp的使用方法 lftp设置 lftp启动时执行~/.lftprc 和~/.lftp/rc。你可以在这两个文件中加入alias或set命令。如果你想看到完全的协议调试过程,可以使用debug来打开调试。 系统级的启动文件为/etc/lftp.conf。 lftp拥有众多设置项,可以通过set -a命令查看所有设置项及它们的值。 lftp命令选项 -d 切换到调试模式 -e commands 执行指定的命令,并且不退出 -p port 使用执行端口进行连接 -u user[,pass] 使用执行的用户名和密码进行连接 -f script_file 执行文件中的命令并且退出 -c commands 执行指定的命令并且退出 环境变量 以下环境变量将被lftp使用: HOME 作为~的扩展 SHELL 在!命令时决定使用哪个shell来运行 PAGER 作为页面名称,在more和zmore命令中使用 http_proxy, https_proxy 作为初始时http:proxy, hftp:proxy, https:proxy的值 ftp_proxy 作为初始时ftp:proxy或hftp:proxy的值(由环境变量中的URL协议指定) no_proxy 作为初始时的net:no-proxy值 LFTP_MODULE_PATH 作为初始时的module:path值 LFTP_HOME 用于定位用户配置文件的目录,如未设置将使用~/.lftp 相关文件 /etc/lftp.conf 系统级启动文件。实际位置由–sysconfdir配置项决定。 ~/.lftp/rc, ~/.lftprc 这些文件在/etc/lftp.conf之后被执行。 ~/.lftp/log 用于记录lftp运行于后台nohup模式时的日志。 ~/.lftp/bookmarks 用户保存lftp中的书签。 ~/.lftp/cwd_history 用于保存每个站点的当前工作目录。 ~/.netrc 用于保存站点的用户名和密码。