lftp

一直想找一個在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
該診斷命令使用 NBTTCP/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
另外可以加上間隔時間,以秒爲單位
 
5net
許多 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"
類似的命令有很多,請參考幫助文件。
 
6Netstat.exe
顯示協議統計和當前的 TCP/IP 網絡連接。該命令只有在安裝了 TCP/IP 協議後纔可以使用。
netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
參數
-a 顯示所有連接和偵聽端口。服務器連接通常不顯示。
-e 顯示以太網統計。該參數可以與 -s 選項結合使用。
-n 以數字格式顯示地址和端口號(而不是嘗試查找名稱)。
-s 顯示每個協議的統計。默認情況下,顯示 TCPUDPICMP IP 的統計。-p 選項可以用來指定默認的子集。
-p protocol 顯示由 protocol 指定的協議的連接;protocol 可以是 tcp udp。如果與 -s 選項一同使用顯示每個協議的統計,protocol 可以是 tcpudpicmp 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
7Ping.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
發佈了25 篇原創文章 · 獲贊 2 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章