Ftp 增强工具比较
现在与主机交互的首选工具应该是 ssh 相关的工具了,比如 scp, rsync。因为他们都是建立在传输层基础上的安全协议。
而老牌的 ftp 则不然,因为他们访问主机时的登录交互容易被窃听,有泄密的可能性。ftp 也有对应的安全版本 sftp, 但是用的就很少了,因为 sftp 也是基于 ssh 的,但是 ssh 自带传输特效,所有 sftp 就很少用的了。
本篇为什么要写 ftp,是因为对接老的系统的时候,是超出我们控制的。
最近的项目中就需要把本地的数据包传到服务器上,因此找了几个 ftp 工具来分析了下。
主要的需求是
- CUI 非 GUI,因为需要结合 Shell 来写脚本
- 容易上传整个目录
- 可以指定上传路径
- 最好密码不要显示在命令行里
找了3个来分析了下功能 ftp, ncftp, lftp
ftp
首先当然是用系统自带的 ftp,
put命令不能指定目标路径,需要先登录后cd到目标路径不能指定整个目录上传,多个文件可以用
mput密码可以带入
user@pass:host中,放在 ~/.netrc 里面
在 ~/.netrc 里的格式是machine host/ip login USERNAME password PASSWORD
ncftp
ncftp 可以满足上面的所有需求
上传整个目录,包括子目录
ncftpput -u user -p pass -R host /host/dir /local/dir上传到指定路径
ncftpput -u user -p pass host /host/dir /local/path隐藏密码
提示输入密码
ncftpput -u user host /host/dir /local/path放入配置文件
ncftpput -f login.cfg host /host/dir /local/pathlogin.cfg 文件是这个格式
host example.com user USERNAME pass PASSWORD
lftp
lftp 满足了我的所有需求
镜像整个目录,包括子目录
lftp -e 'mirror -R /local/dir /host/dir' host上传到指定路径
lftp -e 'put -O /host/dir/ /local/path; bye' host密码方式与
ftp相同
其他比较
使用 ncftp 或者 lftp 登录后,都可以使用上下键历史命令回显,Tab 键显示候选文件,文件补全等功能。他们的功能比较相近,由于满足了我要的需求,没有再深入比较了。