一、简介
1、Lftp是一个基于命令行的文件传输软件(也被称为FTP客户端),由Alexander Lukyanov开发并以GNU GPL协议许可发行。除了FTP协议外,它还支持FTPS,HTTP,HTTPS,HFTP,FISH,以及SFTP等协议。这个程序还支持FXP,允许数据绕过客户端直接在两个FTP服务器之间传输。
2、它有很多很棒的高级功能,比如递归镜像整个目录树以及断点续传下载。传输任务可以安排在稍后的时间段计划执行,可以限制带宽,可以创建传输列表,还支持类似Unix shell的任务控制。客户端还可以在交互式或自动脚本里使用。
二、lftp命令使用
lftp ftp://[用户名:密码@]<FQDN>|<IP地址> [:端口]
lftp ftp://<FQDN>|<IP 地址> -p port -u 用户名,密码
help 查看全部可操作的命令
du 计算远端目录的大小
ls 显示FTP服务器文件列表
!ls 显示本地文件列表
cd 切换远端目录
lcd 切换本地目录
get 从FTP服务器下载单个文件到本地当前目录
mget 从FTP服务器下载多个文件到本地当前目录
pget 使用多个线程来下载远端文件
put 将单个文件上传到FTP服务器
mput 将多个文件上传到FTP服务器
mv 移动FTP服务器上的文件
rm 删除FTP服务器上的文件 (使用参数 -r 递归删除)
mrm 删除FTP服务器上的多个目录
mkdir 在FTP服务器上建立目录
rmdir 删除远端目录。
pwd 显示日前FTP服务器所有目录
lpwd 显示本地目录
exit 退出ftp会话过程
alias 定义别名
bookmark 设定书签
ftp使用方法
ftp [-vdng] [用户名:密码@<FQDN>]|<IP地址>|
< 主机名> <IP地址>:需要连接的FTP服务器的IP地址FQDN
-v :显示远程服务器的所有响应信息
-d :使用调试方式访问FTP服务器
-n :限制ftp的自动登录,即当登录到FTP服务器时,不自动执行 .netrc文件
进入FTP中可以可以使用的命令详解
![命令[参数]] :在FTP客户端中执行命令
open <FQDN>|<IP地址>:打开指定的FTP服务器
bye 退出FTP会话过程
cd 目录:切换FTP服务器的当前目录。
dir [目录][本地文件]:显示FTP服务器目录,并将结果存入本地文件
put 文件:将单个文件上传到FPT服务器
mput 将多个文件上传到FTP服务器
get 文件:从FTP服务器下载单个文件到本地当前目录
mget 文件:从FTP服务器下载多个文件到本地当前目录
delete 文件名:FTP服务器上的文件
case 在使用mget时,将远程主机文件名中的大写转为小写字母
pwd 显示 远程主机的当前工作目录。
rmdir 目录名:删除FTP服务器上的目录
三、环境准备
准备两台Centos6服务器,1台Centos7服务器
系统: Centos6.8,Centos7.3
内存:1G
cpu: 2核
IP地址: 10.0.0.22 10.0.0.23 10.0.0.41
# 安装ftp服务,在22上操作
yum -y install vsftpd
# 启动ftp服务
service vsftpd start
访问测试页面
在23上操作
yum -y install lftp
lftp 10.0.0.22
# 在22上操作
cd /var/ftp/
# 创建文件
touch 1.txt
# 编辑文件
vim 1.txt
# 随便输入点内容
hello ftp!
# 在23上操作
[root@ localhost ~]# lftp 10.0.0.22
lftp 10.0.0.22:~> ls
-rw-r--r-- 1 0 0 11 Nov 21 04:32 1.txt
drwxr-xr-x 2 0 0 4096 Mar 22 2017 pub
# 切换文件至opt目录
lftp 10.0.0.22:/> lcd /opt
lcd ok, local cwd=/opt
# 查看路径
lftp 10.0.0.22:/> lpwd
/opt
lftp 10.0.0.22:/>
# 下载文件
get 1.txt
# 退出当前环境
lftp 10.0.0.22:/> exit
# 进入目录查看文件是否下载过来
[root@ localhost ~]# cd /opt/
[root@ localhost opt]# ls
1.txt rh
[root@ localhost opt]#
[root@ localhost opt]# lftp 10.0.0.22
lftp 10.0.0.22:~> lcd /usr/local/src/
lcd ok, local cwd=/usr/local/src
lftp 10.0.0.22:~> get 1.txt
11 bytes transferred
lftp 10.0.0.22:/>
在开一个23的窗口
# 安装expect服务
yum -y install expect
# 创建文件夹
mkdir ftp
# 进入目录
cd ftp/
# 编辑脚本文件
vim ftp.sh
#!/usr/bin/expect
set timeout 20
spawn lftp 10.0.0.22
expect "~>" {send "lcd /backup/\r"}
expect "~>" {send "get 1.txt\r"}
expect "transferred" {send "exit\r"}
expect eof
# 添加执行权限
chmod +x ftp.sh
# 执行脚本
./ftp.sh
这种是在shell环境下执行的脚本
# 删除文件夹
[root@ localhost ~]# rm -rf /backup
# 执行脚本
[root@ localhost ~]# sh ftp/ftp.sh
spawn lftp 10.0.0.22
lftp 10.0.0.22:~> lcd /backup/
lcd ok, local cwd=/backup
lftp 10.0.0.22:~> get 1.txt
11 bytes transferred
lftp 10.0.0.22:/> exit
[root@ localhost ~]# ls /backup/
1.txt
[root@ localhost ~]#
# 编辑脚本
vim dl.sh
# 添加如下内容
#!/bin/bash
for i in `cat iplist`
do
/usr/bin/expect << EOF
spawn ssh root@$i $1
expect {
"yes/no" {send "yes\r";exp_continue}
"password:" {send "123456\r"}
}
expect eof
EOF
done
# 给脚本加执行权限
chmod +x dl.sh
# 执行脚本,查看各个服务器root目录下的文件
./dl.sh 'ls /root/'
# 执行脚本并进入目录创建文件
./dl.sh 'cd /opt/ && touch wj.conf'
查看是否在其它服务器上创建文件