一直想找一个在linux里能与FlashFXP比肩的ftp客户端,试过了若干种GUI的ftp client,有free的也有non-free的,但实际用过得同志应该清楚,说它们是lj,恐怕伤了作者的心,但又实在找不出其他形容。转了一圈又回到lftp,没有GUI,对于初学者来说,虽然有一点点痛苦,但只要想想,lftp能在众多client中屹立不倒这么多年,而且至今仍然是linux 里最首推崇的利器,足以说明他的功能和易用性都是不错的。我的经验是,花一点时间来学lftp是值得的,不要再徒劳地寻找GUI FTP Client,在unix世界里,没有FlashFXP!
首先来说一下lftp登录站点的操作,有好几种方式,都非常简单。
1. 一气呵成式
$ lftp (ftp://)user:password@site:port
比较常用于网页或bbs上给出的现成链接,缺点是password显示为明文,推荐在月黑风高、四下无人的环境里偷偷输入...如果不幸背后有人
$ lftp (ftp://)user@site:port
然后系统会提示输入password,这是就是******了
2. 老实巴交型
$ lftp site -p port -u user,password
这是lftp说明文档里给出的标准方式,这一招比较费体力,请根据自己身体情况量力而行。如果体能一般,可以
似乎是略微省事一点儿,我一般也用这种方法
3. 五短之中暗藏一长
这是一个递归嵌套的招式%¥#@!×&
$ lftp
lftp:~>lftp user:password@site:port
就是说在lftp控制台里进行操作,和在系统终端是完全一样的,你仍然可以毫无顾忌地用使用前面两招,同时也可以用o或open代替lftp,后面站点用户名密码的格式也可以根据自己偏好输入
4. 终极大招
每次登录都狂敲一行user:password@site:port,长年累月,就算李铁来了也扛不住。所以还是要让lftp把常用的站点记下来,就象FlashFXP里的站台管理器,在lftp里,叫做bookmark,具体的咱们日后再说
登录完成第一件事就是想看看这个服务器上有什么好东东。
操作和终端里是一样的,ls就是列出服务器目录。有一点要说明,第一次ls之后,目录表就被保存到了本地cache,这样再次ls就不能得到这个目录下最新的列表,这时可以用rels重新下载目录表。这里的cache是lftp的默认设置,目的无非就是更快的得到列表,有时却不符和你的使用习惯。可以用 cache on和cache off开关cache,也可以用cache flush来清空cache。
更改目录也是cd,没什么可说的,lftp也支持tab匹配功能,大大减少了劳动强度。
lftp 支援了六种模式, ftp, ftps, http, https, hftp, fish and file(当然了 https 和 ftps 的支援必须在编译就和 openssl library 一起编译好)。
lftp 内建了 shell-like 的命令格式, 允许在背景同时执行多个命令(&)。所有背景执行的工作都是在同一个程序中(process), 能将前景执行的命令放到背景执行(Ctrl-z), 或从背景拿回前景执行(wait 或 fg), 甚至还可以经由上个命令的传回值来决定目前这个命令是否要执行(&& ||)。
在结束 lftp 时, 如果还有程序执行中, lftp 会将自己切换到 no hup 模式並放到背景执行。因此不必担心执行 lftp 当中无法登出。
!
可执行本地端 shell 中的命令, 如 !ls /usr/local/bin/
由於 lftp 並没有 lls(显示本地端档案列表的指令), 故可用 !ls 来替代。
alias [ []]
定义别名
alias less more
alias reconnect "close; cd ."
直接输入 alias 即可看到目前定义了那些别名。如果只输入 alias name 的话, 则是取消 name 这个别名。
bookmark [SUBCMD]
设定书籤, 可将目前站台及所在目录设成书籤, 下次可直接进来, 不用再 cd 来 cd 去的
bookmark add name 用来新增名称为 name 的书籤
bookmark del name 删除名称为 name 的书籤
bookmark list 显示目前有设定那些书籤(另外直接打 bookmark 和 bookmark list 的结果一样)
bookmark edit 呼叫编辑器修改书籤 (~/.lftp/bookmarks)
cd 切换远端目录
cache [SUBCMD]
管理 lftp 的 cache
[re]ls []
从 cache 中显示远端档案列表
rels 则不会从 cache 中读取
[re]cls [opts] [path/][pattern]
从 cache 中显示远端的档案列表, 应该算是 ls 的加强版, 有很多参数可用,应该是可用来产生各种不同>的档案列表以供其他程式使用。
recls 则不会从 cache 中读取
du [options]
计算远端整个目录佔用容量
get [OPTS] [-o ]
抓取远端档案
get rfile -o lfile
抓 rfile 到本地改名为 lfile
-c 为续传
-E 抓档完成後, 将远端的档案砍了
-a 为 ascii mode, 预设为 binary mode
-O 设定 base directory 为本地端放档案的目录
mget [OPTS]
下载远端档案(可用 wildcard expansion 也就是 *)
pget [OPTS] [-o ]
使用多个连结来下载档案, 预设为五个。
-n 3 为叁个连结
jobs [-v]
显示目前有那些程序在背景执行
-v 显示详细的资讯(-v 可多加幾个来显示更详细的资讯)
lcd
切换本地端的目录
mirror [OPTS] [remote [local]]
下载整个目录(楼上的 get 只能用来抓档案)
-c 续传
-e 这个要小心一些, 比较远端和本地端的档案, 假如远端没有的, 就将本地端的档案删除, 也就是将本地端和远端资料同步。
-R 上传整个目录
-n 只下载较新的档案
-r 不用递迴到目录中
--parallel=n 同时下载 n 个档案(预设一次只下载一个)
module name [args]
载入模组
put [OPTS] [-o ]
上传档案
mput [OPTS]
上传档案(可用 wildcard expansion 也就是 *)
mv
将远端的 file1 改名为 file2
mrm
用 wildcard expansion 方式来删除远端档案
open [OPTS]
开启某个站台
open -u [,] -p site
queue [OPTS] []
将 cmd 放到伫列中等待执行
-d index 将编号为 index 的 job 删除
-m index new_index 将编号为 index 的 job 移至编号 new_index, 插队专用。
-n index 在编号 index 之前新增一个 job
wait []
将背景执行中的程序移至前景(也可用 fg)
kill all|
删除全部的 jobs 或 job_no
repeat [delay] [command]
每隔 delay 秒, 重覆执行 command, 预设是每隔一秒
rm [-r] [-f]
移除远端档案
mkdir [-p]
建立远端目录
rmdir [-f]
移除远端目录
set [OPT] [ []]
设定变数
直接键入 set 可看目前定义了那些变数
source
读取 file, 並执行 file 中的命令(应该是和 bash 中的 source 命令是一样的吧)
debug [|off] [-o ]
设定 debug level 为 level
-o 将输出导向至 file
exit [|bg]
结束 lftp
此时若还有 jobs, 则会将 lftp 放至背景执行, 继续未完成的工作
history -w file|-r file|-c|-l [cnt]
和 bash 中的 history 功能一样
[re]nlist []
只显示远端的档名
pwd [-p]
显示目前远端所在目录
-p 连登入密码也显示
scache []
只打 scache 显示目前所有的 session, 加上 session_no 可切换至其他的 session,
对於同时开启多个站台或同个站台不同目录间切换。
小弟有遇过某些站台, 一个 ip 只允许登入一次的,如果想同时抓好幾个档案在不同目录下,就
只能一次抓一个,等到抓完了才能再切换到别的目录去抓第二个, 这时 lftp 的 queue 就派上
用场了。一般下了 get, mget 的话, 档案就直接开始下载了, 这时就无法再切换到其他目录了, 因此, 先将 queue 给停止, 首先下个 queue, 按 enter, 再下个 jobs 即可看到目前 qu
eue 是停止的。这时再将要抓的东东一个个加入 queue 中, 等到要抓的东东都进入 queue 後
, 再下 queue start 一次全部传送, 这样子可省去随时注意档案是否抓完,迼成困扰。
lftp localhost:/pub/Iso> queue
lftp localhost:/pub/Iso> jobs
[0] queue (ftp://localhost)
Queue is stopped.
lftp localhost:/pub/Iso> queue get rettcd.iso
lftp localhost:/pub/Iso> jobs
[0] queue (ftp://localhost)
Queue is stopped.
Commands queued:
1. get rettcd.iso
lftp localhost:/pub/Iso> queue mirror Linux/
lftp localhost:/pub/Iso> jobs
[0] queue (ftp://localhost)
Queue is stopped.
Commands queued:
1. get rettcd.iso
2. mirror Linux/
lftp localhost:/pub/Iso> queue start
lftp localhost:/pub/Iso> jobs
[0] queue (ftp://localhost)
Now executing: [1] get rettcd.iso
Commands queued:
1. mirror Linux/
[1] get rettcd.iso
`rettcd.iso' at 4772864 (9%) 3.00M/s eta:14s [Receiving data]
相关文件
/etc/lftp.conf
全局配置文件,实际位置依赖系统配置文件目录,可能在/etc,也可能在/usr/local/etc
~/.lftp/rc, ~/.lftprc
用户配置文件,将在/etc/lftp.conf之后执行,所以这里面的设置会覆盖/etc/lftp.conf中的设置。
lftp 缺省不会显示 ftp 服务器的欢迎信息和错误信息,这在很多时候不方便,因为你有可能想知道这个服务器到底是因为没开机连不上,还是连接数已满。如果是这样,你可以在 ~/.lftprc 里写入一行
debug 3
就可以看到出错信息了。
更多的配置选项请查man手册或在lftp界面内用命令 set -a 获得。
~/.lftp/log
当lftp转为后台非挂起模式执行时,输出将重定向到这里
~/.lftp/bookmarks
这是lftp存储书签的地方,可以lftp查看bookmark命令
~/.lftp/cwd_history
这个文件用来存储访问过的站点的工作目录
ftp
ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer]
参数
-v 禁止显示远程服务器响应。
-n 禁止自动登录到初始连接。
-I 多个文件传送时关闭交互提示。
-d 启用调试、显示在客户端和服务器之间传递的所有 ftp 命令。
-g 禁用文件名组,它允许在本地文件和路径名中使用通配符字符(* 和 ?)。(请参阅联机“命令参考”中的 glob 命令。)
-s: filename指定包含 ftp 命令的文本文件;当 ftp 启动后,这些命令将自动运行。该参数中不允许有空格。使用该开关而不是重定向 (>)。
-a 在捆绑数据连接时使用任何本地接口。
-w:windowsize 替代默认大小为 4096 的传送缓冲区。
Computer 指定要连接到远程计算机的计算机名或 IP 地址。如果指定,计算机必须是行的最后一个参数。
下面是一些常用命令:
!: 从ftp子系统退出到系统外壳
?: 显示ftp说明,跟help一样
append: 添加文件,格式为:append 本地文件远程文件
cd: 更换远程目录
lcd: 更换本地目录,若无参数,将显示当前目录
open: 与指定的ftp服务器连接 open computer [port]
close:结束与远程服务器的 FTP 会话并返回命令解释程序
bye: 结束与远程计算机的 FTP 会话并退出 ftp
dir: 结束与远程计算机的 FTP 会话并退出 ftp
get 和 recv:使用当前文件转换类型将远程文件复制到本地计算机 get remote-file [local-file]
send 和 put: 上传文件:send local-file [remote-file]
其它命令请参考帮助文件。
例子:
C:/>ftp
ftp> open ftp.zju.edu.cn
Connected to alpha800.zju.edu.cn.
220 ProFTPD 1.2.0pre9 Server (浙江大学自由软件服务器) [alpha800.zju.edu.cn]
User (alpha800.zju.edu.cn:(none)): anonymous
331 Anonymous login ok, send your complete e-mail address as password.
Password:
230 Anonymous access granted, restrictions apply.
ftp> dir //查看本目录下的内容:
…
ftp> cd pub //切换目录
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
…
ftp> cd microsoft
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
-rw-r--r-- 1 ftp ftp 288632 Dec 8 1999 chargeni.exe
226 Transfer complete.
ftp: 69 bytes received in 0.01Seconds 6.90Kbytes/sec.
ftp> lcd e:/ //本地目录切换
Local directory now E:/.
ftp> get chargeni.exe //下载文件
200 PORT command successful.
150 Opening ASCII mode data connection for chargeni.exe (288632 bytes).
226 Transfer complete.
ftp: 289739 bytes received in 0.36Seconds 802.60Kbytes/sec.
ftp> bye //离开
221 Goodbye.
Nbtstat.exe
该诊断命令使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。该命令只有在安装了 TCP/IP 协议之后才可用。
nbtstat [-a remotename] [-A IP address] [-c] [-n] [-R] [-r] [-S] [-s] [interval]
参数
-a remotename 使用远程计算机的名称列出其名称表。
-A IP address 使用远程计算机的 IP 地址并列出名称表。
-c 给定每个名称的 IP 地址并列出 NetBIOS 名称缓存的内容。
-n 列出本地 NetBIOS 名称。“已注册”表明该名称已被广播 (Bnode) 或者 WINS(其他节点类型)注册。
-R 清除 NetBIOS 名称缓存中的所有名称后,重新装入 Lmhosts 文件。
-r 列出 Windows 网络名称解析的名称解析统计。在配置使用 WINS 的 Windows 2000 计算机上,此选项返回要通过广播或 WINS 来解析和注册的名称数。
-S 显示客户端和服务器会话,只通过 IP 地址列出远程计算机。
-s 显示客户端和服务器会话。尝试将远程计算机 IP 地址转换成使用主机文件的名称。
interval重新显示选中的统计,在每个显示之间暂停 interval 秒。按 CTRL+C 停止重新显示统计信息。如果省略该参数,nbtstat 打印一次当前的配置信息。
例子:
C:/>nbtstat –A 周围主机的ip地址
C:/>nbtstat –c
C:/>nbtstat –n
C:/>nbtstat -S
本地连接:
Node IpAddress: [10.111.142.71] Scope Id: []
NetBIOS Connection Table
Local Name State In/Out Remote Host Input Output
JJY <03> Listening
另外可以加上间隔时间,以秒为单位
5、net:
许多 Windows 2000 网络命令都以词 net 开头。这些 net 命令有一些公用属性:
键入 net /? 可以看到所有可用的 net 命令的列表。
键入 net help command,可以在命令行获得 net 命令的语法帮助。例如,关于 net accounts 命令的帮助信息,请键入 net help accounts。
所有 net 命令都接受 /yes 和 /no 选项(可以缩写为 /y 和 /n)。/y 选项向命令产生的任何交互式提示自动回答“是”,而 /n 回答“否”。例如,net stop server 通常提示您确认要停止基于“服务器”服务的所有服务;而 net stop server /y 对该提示自动回答“是”,然后“服务器”服务关闭。
例如:
Net send:(可能许多人已经用过,或者感到厌烦,索性把服务给关了)
net send {name | * | /domain[:name] | /usersmessage}
Net stop:停止 Windows 2000 网络服务。
net stop service
例如:C:/>net stop messenger
Messenger 服务正在停止.
Messenger 服务已成功停止。
此时再打入net send 本机名消息,就没用了;相应的,要打开这个服务,只需把stop改为start,就可以了。
Net start FTP Publishing Service
启动 FTP 发布服务。该命令只有在安装了 Internet 信息服务后才可用。
net start "ftp publishing service"
类似的命令有很多,请参考帮助文件。
6、Netstat.exe
显示协议统计和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。
netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
参数
-a 显示所有连接和侦听端口。服务器连接通常不显示。
-e 显示以太网统计。该参数可以与 -s 选项结合使用。
-n 以数字格式显示地址和端口号(而不是尝试查找名称)。
-s 显示每个协议的统计。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计。-p 选项可以用来指定默认的子集。
-p protocol 显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。如果与 -s 选项一同使用显示每个协议的统计,protocol 可以是 tcp、udp、icmp 或 ip。
-r 显示路由表的内容。
Interval 重新显示所选的统计,在每次显示之间暂停 interval 秒。按 CTRL+B 停止重新显示统计。如果省略该参数,netstat 将打印一次当前的配置信息。
例如:
C:/>netstat -as
IP Statistics
Packets Received = 256325
…
ICMP Statistics
Received Sent
Messages 16 68
…
TCP Statistics
…
Segments Received = 41828
UDP Statistics
Datagrams Received = 82401
…
7、Ping.exe
验证与远程计算机的连接。该命令只有在安装了 TCP/IP 协议后才可以使用。
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
参数
-t Ping 指定的计算机直到中断。
-a 将地址解析为计算机名。
-n count 发送 count 指定的 ECHO 数据包数。默认值为 4。
-l length 发送包含由 length 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是 65,527。
-f 在数据包中发送“不要分段”标志。数据包就不会被路由上的网关分段。
-i ttl将“生存时间”字段设置为 ttl 指定的值。
-v tos 将“服务类型”字段设置为 tos 指定的值。
-r count 在“记录路由”字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。
-s count 指定 count 指定的跃点数的时间戳。
-j computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。
-k computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。
-w timeout 指定超时间隔,单位为毫秒。
destination-list 指定要 ping 的远程计算机。
较一般的用法是 ping –t www.zju.edu.cn
例如:
C:/>ping www.zju.edu.cn
Pinging zjuwww.zju.edu.cn [10.10.2.21] with 32 bytes of data:
Reply from 10.10.2.21: bytes=32 time=10ms TTL=253
Reply from 10.10.2.21: bytes=32 time<10ms TTL=253
Reply from 10.10.2.21: bytes=32 time<10ms TTL=253
Reply from 10.10.2.21: bytes=32 time<10ms TTL=253
Ping statistics for 10.10.2.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 2ms
Telnet.exe
在命令行键入telnet,将进入telnet模式。键入help,可以看到一些常用命令。
Microsoft Telnet> help
指令可能缩写了。支持的指令为:
close 关闭当前连接
display 显示操作参数
open 连接到一个站点
quit 退出 telnet
set 设置选项 (要列表,请键入 'set ?' )
status 打印状态信息
unset 解除设置选项 (要列表,请键入 'unset ?' )
?/help 打印帮助信息
可以键入display命令来查看当前配置:
C:/telnet
Microsoft Telnet> display
Escape 字符为 'CTRL+]'
WILL AUTH (NTLM 身份验证)
关闭 LOCAL_ECHO
发送 CR 和 LF
WILL TERM TYPE
优选的类型为 ANSI
协商的规则类型为 ANSI
可以使用set命令来设置环境变量,如:
Microsoft Telnet> set local_echo on
NTLM 打开 NTLM 身份验证。
LOCAL_ECHO 打开 LOCAL_ECHO。
TERM x (x 表示 ANSI, VT100, VT52 或 VTNT)
CODESET x (x 表示 Shift JIS,
Japanese EUC,
JIS Kanji,
JIS Kanji(78),
DEC Kanji 或
NEC Kanji)
CRLF 发送 CR 和 LF
例如:假设主机10.111.142.71打开了telnet服务
Microsoft Telnet> open 10.111.142.71
正在连接到10.111.142.71...
您将要发送密码信息到 Internet 区域中的远程计算机。这可能不安全。是否还要发送(y/n
): y (不同系统会有区别)
上面曾说明了Escape 字符为 'CTRL+]',所以键入这个字符就可以切换到外面,再按下单独的Enter键又可以回去。
Microsoft Telnet> status
已连接到 10.111.142.71
协商的规则类型为 ANSI