为了结合sftp做自动上传(),引用了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 用于保存站点的用户名和密码。