快速構建FTP伺服器,FTP伺服器實現的基本功能是,下面就分幾個步驟來搭建一個可以實現功能的簡易FTP伺服器。
1.安裝FTP伺服器
如果在安裝系統時沒有選擇安裝FTP伺服器,可以通過Red Hat中的「添加/刪除應用程序」進行安裝。具體方法是,選擇「主選單」→「」→「添加/刪除應用程序」,在彈出的界面中選中FTP伺服器,單擊「更新」即可。
如果無法確認是否安裝了該軟體,可以使用以下命令查看:
2.啟動FTP伺服器
套用Red Hat 9.0的預設範例直接啟動VSFTP。
為vsftpd啟動vsftpd: [確定]
3.在/var/ftp/pub目錄下創建一個名為test.txt的文件
文件內容為「This is a test file」。
4.測試
使用FTP客戶端登錄到本地伺服器,然後以匿名身份(anonymous)登錄:
# ftp 127.0.0.1Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.1.3)Name (127.0.0.1:root): anonymous331 Please specify the pass.Password:230 Login successful. Have fun.Remote system type is UNIX.Using binary mode to transfer files.
這樣就成功地登錄到FTP伺服器。可以顯示伺服器目錄列表如下:
ftp ls227 Entering Passive Mode (127,0,0,1,63,15)drwxr-xr-x 2 0 0 4096 Dec 04 01:35 pub226 y send OK.
切換到pub目錄下,並顯示目錄內容,可以找到剛才創建的文件test.txt:
ftp cd pub250 Directory successfully changed.ftp ls227 Entering Passive Mode (127,0,0,1,232,34)150 Here comes the directory listing.-rw-r--r-- 1 0 0 21 Dec 04 01:35 test.txt226 Directory send OK.
下載test.txt文件:
ftp mget test.txtmget test.txt? y227 Entering Passive Mode (127,0,0,1,186,210)150 Opening BINARY mode data connection for test.txt (21 bytes).226 File send OK.21 bytes received in 0.0108 secs (1.9 Kbytes/sec)
查看本機目錄內容,可以看到test.txt已成功下載到本機。
ftp !lsa EIO_Binders initrd mnt proc tftpboot ylg.txtbin etc lib mymnt root tmpboot home lost+found myshare sbin usrdev id_dsas.pub misc opt test.txt var
嘗試上傳名為ylg.txt的文件,可以看到請求被拒絕了。
ftp put ylg.txtlocal: ylg.txt remote: ylg.txt227 Entering Passive Mode (127,0,0,1,243,10)550 Permission dend.
退出登錄:
由測試可以看出,已經可以下載文件,但不能上傳文件(也不能在伺服器上創建目錄和文件)。實際上這是一個專門提供下載服務的匿名FTP伺服器。
從上面的步驟可以看出,並不需要做什麼配置就可以完成一個簡易FTP伺服器的架設。這是因為Red Hat已經配置好一個預設的FTP伺服器。不過在實際應用中,大部分情況下這個簡易的伺服器並不能滿足需求。
進一步配置FTP
下面將創建一個能夠滿足常用需求的FTP伺服器。實際應用中,FTP伺服器一般要同時提供和功能。此外,出於安全考慮,還需要有用戶身份驗證、用戶許可權設置及空間管理等。下面就來搭建這樣一個FTP伺服器。
1.創建歡迎語
如果希望使用者在進入目錄時,能夠看到歡迎語或對本目錄的介紹,可以通過以下方法來實現。
確定/etc/vsftpd/vsftpd.conf文件中dirmessage_enable=YES,默認情況下,Red Hat 9.0有此設置。接著,在目錄中新增名為.message的文件。本例在/home/ylg目錄下創建一個.message文件,其內容為「歡迎來到我的 FTP站點」。
2.更換FTP伺服器的默認埠
將預設的21埠改為2121,這樣做是基於安全的考慮。更改方法為,使用vi打開/etc/vsftpd/vsftpd.conf:#vi /etc/vsftpd/vsftpd.conf
在文件最後增加如下一行內容:
3.取消anonymous登錄的功能
在vsftpd.conf文件中找到如下一行,並將其值改為「NO」:anonymous_enable=YES
4.設定使用者不得更改目錄
這樣做的目的也是基於安全性的考慮。一般情況下,使用者的預設目錄為/home/username。若是不希望使用者在登錄後能夠切換至上一層目錄/home,則可通過以下設置來實現。在/etc/vsftpd/vsftpd.conf文件中找到以下三行內容:
#chroot_list_enable=YES# (default follows)#chroot_list_file=/etc/vsftpd.chroot_list
將其改為:
chroot_list_enable=YES# (default follows)chroot_list_file=/etc/vsftpd/chroot_list
新增一個文件/etc/vsftpd/chroot_list,文件內容為兩個用戶名:
5.針對不同的使用者限制不同的速度
假設用戶ylg所能使用的最高速度為500Kb/s,用戶user1所能使用的最高速度為250Kb/s,可以通過以下方法設置。在/etc/vsftpd/vsftpd.conf文件尾部新增以下一行:
增加一個名為/etc/vsftpd/userconf的目錄:
在/etc/vsftpd/userconf下新增一個名為ylg的文件,其內容如下所示:
local_max_rate=500000
在/etc/vsftpd/userconf目錄下新增一個名為user1的文件,其內容如下所示:
local_max_rate=250000
VSFTP對於速度的限制范圍大概在80%到120%之間,也就是限制最高速度為100Kb/s,但實際的速度可能在80Kb/s到120Kb/s之間。如果頻寬不足,數值會低於此限制。6.對於每一個聯機用戶,都以獨立的進程來運行。一般情況下,在啟動VSFTP時,只會看到一個名為vsftpd的進程在運行。但若是讀者希望每一個聯機用戶都能以獨立的進程來呈現,則可通過在/etc/vsftpd/vsftpd.conf文件中增加以下一行來實現:
setproctitle_enable=YES
6.保存/etc/vsftpd/vsftpd.conf文件,然後重新啟動vsftpd:
7.測試剛創建的FTP伺服器
以預設方式登錄會被拒絕,因為此時的默認埠號已經更改為2121,所以登錄時需指定埠。
此時也不能再使用匿名方式登錄:
# ftp 127.0.0.1 2121Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.1.3)Name (127.0.0.1:root): anonymous331 Please specify the pass.Password:530 Login incorrect.Login failed.
如果以用戶ylg則可以成功登錄(指定埠2121),並顯示歡迎信息:
# ftp 127.0.0.1 2121Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.1.3)Name (127.0.0.1:root): ylg331 Please specify the password.Password:230-歡迎來到我的FTP站點230 Login successful. Have fun.Remote system type is .Using binary mode to transfer files.
因為在設置中設定了不能切換目錄,所以下列命令無法正確執行:
550 Failed to change y.
再來測試一下上傳和。首先下載伺服器目錄中的test.txt文件:
ftp get test.txtlocal: test.txt remote: test.txt227 Entering Passive Mode (127,0,0,1,243,215)150 Opening BINARY mode data connection for test.txt (21 bytes).226 File send OK.21 bytes received in 0.00308 secs (6.7 Kbytes/sec)
可以通過!ls命令看到本機目錄中已成功下載該文件。然後上傳本機目錄中的ylg.txt文件到伺服器:
ftp put ylg.txtlocal: ylg.txt remote: ylg.txt227 Entering Passive Mode (127,0,0,1,133,248)150 Ok to send data.226 File receive OK.19 bytes sent in 0.0401 secs (0.46 Kbytes/sec)
用ls命令查看伺服器目錄,會發現該文件已成功上傳。
為了測試不同連機用戶使用的是不同進程,可以使用ps -ef指令
2. linux下用ftp命令連接到ftp伺服器應該如何查看伺服器上的目錄文件數
1.Linux下啟動ftp
ls -l 普通文件就是以 - 開頭,文件夾以 d 開頭,grep 後面接正則表達式:^- 以 - 開頭的匹配。
(2)linuxftp下載文件夾命令擴展閱讀:
1.查看當前目錄下的文件數量(不包含子目錄中的文件):
ls -l|grep "^-"| wc -l
2. 查看當前目錄下的文件數量(包含子目錄中的文件):
ls -lR|grep "^-"| wc -l
3.查看當前目錄下的文件夾目錄個數,(不包含子目錄中的目錄):
ls -l|grep "^d"| wc -l
4.查詢當前路徑下的指定前綴名的目錄下的所有文件數量 例如:統計所有以「20161124」開頭的目錄下的全部文件數量:
ls -lR 20161124*/|grep "^-"| wc -l
3. 請問linux下用從終端登錄ftp,將某文件下載到某文件夾的命令是什麼
get ./111.doc /usr/share/111.doc
暈,看提示就知道你輸入的存儲路徑有問題!
4. ftp查詢命令大全
需要使用ftp命令的來這里查詢吧。接下來是我為大家收集的ftp查詢命令,希望能幫到大家。
ftp查詢命令大全
FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作系統下使用FTP,都會遇到大量的FTP內部命令。 熟悉並靈活應用FTP的內部命令,可以大大方便使用者,並收到事半功倍之效。FTP的命令行格式為: ftp -v -d -i -n -g [主機名] ,其中-v 顯示遠程伺服器的所有響應信息; 計算機-n 限制ftp的自動登錄,即不使用;.n etrc文件;
-d 使用調試方式;
-g 取消全局文件名。
ftp使用的內部命令如下(中括弧表示可選項):
1.![cmd[args]]:在本地機中執行交互shell,exit回到ftp環境,如:
!ls*.zip.
2.$ macro-ame[args]:執行宏定義macro-name.e.
3.account[password]:提供登錄遠程系統成功後訪問系統資源所需的補
充口令。
4.append local-file[remote-file]:將本地文件追加到遠程系統主機, 計算機基礎知識
若未指定遠程系統文件名,則使用本地文件名。
5.ascii:使用ascii類型傳輸方式。
6.bell:每個命令執行完畢後計算機響鈴一次。
7.bin:使用二進制文件傳輸方式。
8.bye:退出ftp會話過程。
9.case:在使用mget時,將遠程主機文件名中的大寫轉為小寫字母。
10.cd remote-dir:進入遠程主機目錄。
11.cp:進入遠程主機目錄的父目錄。
12.chmod mode file-name:將遠程主機文件file-name的存取方式設置為
mode,如: chmod 777 a.out 。
13.close:中斷與遠程伺服器的ftp會話(與open對應)。
14.cr:使用asscii方式傳輸文件時,將回車換行轉換為回行。
15.delete remote-file:刪除遠程主機文件。
16.debug[debug-value]:設置調試方式, 顯示發送至遠程主機的每條命
令,如: deb up 3,若設為0,表示取消debug。
17.dir[remote-dir][local-file]:顯示遠程主機目錄,並將結果存入本
地文件local-file。
18.disconnection:同close。
19.form format:將文件傳輸方式設置為format,預設為file方式。
20.get remote-file[local-file]: 將遠程主機的文件remote-file傳至
本地硬碟的local-file。
21.glob:設置mdelete,mget,mput的文件名擴展,預設時不擴展文件名,
同命令行的-g參數。
22.hash:每傳輸1024位元組,顯示一個hash符號(#)。
23.help[cmd]:顯示ftp內部命令cmd的幫助信息,如:help get。
24.idle[seconds]:將遠程伺服器的休眠計時器設為[seconds]秒。
25.image:設置二進制傳輸方式(同binary)。
26.lcd[dir]:將本地工作目錄切換至dir。
27.ls[remote-dir][local-file]:顯示遠程目錄remote-dir, 並存入本
地文件local-file。
28.macdef macro-name:定義一個宏,遇到macdef下的空行時,宏定義結
束。
29.mdelete[remote-file]:刪除遠程主機文件。
30.mdir remote-files local-file:與dir類似,但可指定多個遠程文件,
如: mdir *.o.*.zipoutfile 。
31.mget remote-files:傳輸多個遠程文件。
32.mkdir dir-name:在遠程主機中建一目錄。
33.mls remote-file local-file:同nlist,但可指定多個文件名。
34.mode[modename]:將文件傳輸方式設置為modename, 預設為stream方
式。
35.modtime file-name:顯示遠程主機文件的最後修改時間。
36.mput local-file:將多個文件傳輸至遠程主機。 電腦入門
37.newer file-name: 如果遠程機中file-name的修改時間比本地硬碟同
名文件的時間更近,則重傳該文件。
38.nlist[remote-dir][local-file]:顯示遠程主機目錄的文件清單,並
存入本地硬碟的local-file。
39.nmap[inpattern outpattern]:設置文件名映射機制, 使得文件傳輸
時,文件中的某些字元相互轉換,如:nmap $1.$2.$3[$1,$2].[$2,$3],則
傳輸文件a1.a2.a3時,文件名變為a1,a2。該命令特別適用於遠程主機為非UNIX
機的情況。
40.ntrans[inchars[outchars]]:設置文件名字元的翻譯機制,如ntrans
1R,則文件名LLL將變為RRR。
41.open host[port]:建立指定ftp伺服器連接,可指定連接埠。
42.passive:進入被動傳輸方式。
43.prompt:設置多個文件傳輸時的交互提示。
44.proxy ftp-cmd:在次要控制連接中,執行一條ftp命令, 該命令允許
連接兩個ftp伺服器,以在兩個伺服器間傳輸文件。第一條ftp命令必須為open,
以首先建立兩個伺服器間的連接。
45.put local-file[remote-file]:將本地文件local-file傳送至遠程主
機。
46.pwd:顯示遠程主機的當前工作目錄。
47.quit:同bye,退出ftp會話。
48.quote arg1,arg2...:將參數逐字發至遠程ftp伺服器,如:
quote syst.
49.recv remote-file[local-file]:同get。
50.reget remote-file[local-file]:類似於get,但若local-file存在,
則從上次傳輸中斷處續傳。
51.rhelp[cmd-name]:請求獲得遠程主機的幫助。
52.rstatus[file-name]:若未指定文件名,則顯示遠程主機的狀態,否
則顯示文件狀態。
53.rename[from][to]:更改遠程主機文件名。
54.reset:清除回答隊列。
55.restart marker:從指定的標志marker處,重新開始get或put,如:
restart 130。
56.rmdir dir-name:刪除遠程主機目錄。
57.runique:設置文件名唯一性存儲,若文件存在,則在原文件後加後綴
..1,.2等。
58.send local-file[remote-file]:同put。
59.sendport:設置PORT命令的使用。
60.site arg1,arg2...:將參數作為SITE命令逐字發送至遠程ftp主機。
61.size file-name:顯示遠程主機文件大小,如:site idle 7200。
62.status:顯示當前ftp狀態。
63.struct[struct-name]:將文件傳輸結構設置為struct-name, 預設時
使用stream結構。
64.sunique:將遠程主機文件名存儲設置為唯一(與runique對應)。
65.system:顯示遠程主機的操作系統類型。
66.tenex:將文件傳輸類型設置為TENEX機的所需的類型。
67.tick:設置傳輸時的位元組計數器。
68.trace:設置包跟蹤。
69.type[type-name]:設置文件傳輸類型為type-name,預設為ascii,如:
type binary,設置二進制傳輸方式。
70.umask[newmask]:將遠程伺服器的預設umask設置為newmask,如:
umask 3。
71.user user-name[password][account]:向遠程主機表明自己的身份,
需要口令時,必須輸入口令,如:user anonymous my@email。
72.verbose:同命令行的-v參數,即設置詳盡報告方式,ftp伺服器的所有
響應都將顯示給用戶,預設為on.
73.?[cmd]:同help.
看了“ftp查詢命令大全”還想看:
1. FTP命令解析
2. 通過cmd命令到ftp上下載文件
3. windows命令行怎麼使用ftp
4. Linux ftp命令的使用方法有哪些
5. 如何通過cmd命令到ftp上下載文件
5. CMD里 FTP的命令都有什麼
在cmd中ftp命令很多,常用的主要有:
1、ftp192.168.1.3登陸ftp。
2、dir顯示遠程主機目錄。
3、cdremote-dir:進入遠程主機目錄。
4、help[cmd]:顯示ftp內部命令cmd的幫助信息,如:helpget。
5、getremote-file[local-file]:將遠程主機的文件remote-file傳至本地硬碟的local-file(本地文件夾)。
6、putlocal-file[remote-file]:將本地文件local-file傳送至遠程主機。
(5)linuxftp下載文件夾命令擴展閱讀:
FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作系統下使用FTP,都會遇到大量的FTP內部命令。熟悉並靈活應用FTP的內部命令,可以大大方便使用者,並收到事半功倍之效。
FTP是用來在兩台計算機之間傳輸文件,是Internet中應用非常廣泛的服務之一。它可根據實際需要設置各用戶的使用許可權,同時還具有跨平台的特性,即在UNIX、Linux和Windows等操作系統中都可實現FTP客戶端和伺服器,相互之間可跨平台進行文件的傳輸。
因此,FTP服務是網路中經常採用的資源共享方式之一。FTP協議有PORT和PASV兩種工作模式,即主動模式和被動模式。
6. linux下ftp命令詳解
ftp(file transfer protocol)
功能說明:設置文件系統相關功能。
語法:ftp [-dignv][主機名稱或IP地址]
補充說明:FTP是ARPANet的標准文件傳輸協議,該網路就是現今Internet的前身。
參數: 《Linux就該這么學》
-d 詳細顯示指令執行過程,便於排錯或分析程序執行的情形。
-i 關閉互動模式,不詢問任何問題。
-g 關閉本地主機文件名稱支持特殊字元的擴充特性。
-n 不使用自動登陸。
-v 顯示指令執行過程。
1. 連接ftp伺服器
格式:ftp [hostname| ip-address]
a)在linux命令行下輸入:
ftp 192.168.1.1
b)伺服器詢問你用戶名和密碼,分別輸入用戶名和相應密碼,待認證通過即可。
c)也可以先輸入ftp
ftp>
d)然後在輸入要連接的IP
ftp>open 192.168.1.1
2. 下載文件
下載文件通常用get和mget這兩條命令。
a) get
格式:get [remote-file] [local-file]
將文件從遠端主機中傳送至本地主機中。
如要獲取遠程伺服器上/usr/your/1.htm,則
ftp> get /usr/your/1.htm 1.htm (回車)
b) mget
格式:mget [remote-files]
從遠端主機接收一批文件至本地主機。
如要獲取伺服器上/usr/your/下的所有文件,則
ftp> cd /usr/your/
ftp> mget *.* (回車)
此時每下載一個文件,都會有提示。如果要除掉提示,則在mget *.* 命令前先執行:prompt off
注意:文件都下載到了linux主機的當前目錄下。比如,在/usr/my下運行的ftp命令,則文件都下載到了/usr/my下。
3.上傳文件
a) put
格式:put local-file [remote-file]
將本地一個文件傳送至遠端主機中。
如要把本地的1.htm傳送到遠端主機/usr/your,並改名為2.htm
ftp> put 1.htm /usr/your/2.htm (回車)
b) mput
格式:mput local-files
將本地主機中一批文件傳送至遠端主機。
如要把本地當前目錄下所有html文件上傳到伺服器/usr/your/ 下
ftp> cd /usr/your (回車)
ftp> mput *.htm(回車)
7. 用linux命令 在ftp上下載多個文件,該怎麼寫呢謝謝!
這個是挺容易的。你可以使用help來查詢可用命令。標準的情況下,mget可以接受通配符(即像shell一樣使用通配符表示一類文件),這樣就可以一次下載多個文件了。更高級的一些FTP客戶端還可以支持下載列表等功能。你也可以使用axel或wget來使用列表以進行多個文件下載(在這種情況下應該是寫成這樣:ftp://username:passwd@servername/filename,具體能不能用小弟還沒試過,你可以查詢相關資料或者找o'reilly的書籍看看)。
8. 如何使用get命令利用FTP下載文件到本地
1、從遠程ftp伺服器下載文件的命令格式:
get 遠程ftp伺服器上當前目錄下要下載的文件名。
2、附上ftp常用命令,如下所示:
FTP>open [ftpservername],和指定的遠程Linux FTP伺服器連接。
FTP>user [username] [password],使用指定遠程Linux FTP伺服器的用戶登錄。
FTP>pwd,顯示遠程Linux FTP伺服器上的當前路徑。
FTP>ls,列出遠程Linux FTP伺服器上當前路徑下的目錄和文件。
FTP>dir,列出遠程Linux FTP伺服器上當前路徑下的目錄和文件(同上)。
FTP>mkdir [foldname],在遠程Linux FTP伺服器上當前路徑下建立指定目錄。
FTP>rmdir [foldname],刪除遠程Linux FTP伺服器上當前路徑下的指定目錄。
FTP>cd [foldname],更改遠程Linux FTP伺服器上的工作目錄。
FTP>delete [filename],刪除遠程Linux FTP伺服器上指定的文件。
FTP>rename [filename] [newfilename],重命名遠程Linux FTP伺服器上指定的文件。
FTP>close,從遠程Linux FTP伺服器斷開但保留FTP命令參數提示。
FTP>disconnect,從遠程Linux FTP伺服器斷開但保留FTP命令參數提示(同上)。
FTP>bye,結束和遠程Linux FTP伺服器的連接。
FTP>quit,結束和遠程Linux FTP伺服器的連接(同上)。
FTP>!,直接從遠程Linux FTP伺服器進入到本地shell中。
FTP>exit,(接上步)從本地shell環境中返回到遠程Linux FTP伺服器環境下。
FTP>!ls,列出本地機器上當前路徑下的目錄和文件。
FTP>lcd [foldname],更改本地機器的工作目錄。
9. 用shell的linux伺服器 .sh插件怎麼從遠程ftp伺服器下載文件
//ftpput.sh
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:從本地客戶端向ftp伺服器上傳一個文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示傳遞給此Shell腳本的參數個數
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME獲取本地文件全路徑名
FULLNAME=$1
#DESTDIR獲取需要上傳的ftp遠程目錄路徑
DESTDIR=$2
#basename返回一個路徑中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#當local_filename=`basename $FULLNAME`
#最終local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp伺服器的路徑,以及保存後的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
exit 0
//注釋:
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:從本地客戶端向ftp伺服器上傳一個文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示傳遞給此Shell腳本的參數個數
#-lt表示小於
#-eq表示等於
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
#IP=127.0.0.1
IP=192.168.6.1
#FULLNAME獲取本地文件全路徑名
FULLNAME=$1
#DESTDIR獲取需要上傳的ftp遠程目錄路徑
DESTDIR=$2
#basename返回一個路徑中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#當local_filename=`basename $FULLNAME`
#最終local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp伺服器的路徑,以及保存後的文件名
DESTFILE=$DESTDIR/$local_filename
#-i表示在多個文件傳輸期間關閉交互提示
#-n表示禁止自動登錄到初始連接
#<<FTPIT 和最後的 FTPIT:術語叫:當前文檔here documents. here document 就是一段特殊目的的代碼塊,
#它使用I/O重定向的形式來將一個命令序列傳遞到一個交互程序或者命令中,比如ftp、cat,或者ex文本編輯器.
#本句可以理解從<<FTPIT開始以非對話模式的ftp連接,直到輸入FTPIT為止的所有命令.
#當然FTPIT這個名字是可以隨便取的,不一定必須是FTPIT,可以取其它的名字。
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
#連接到指定ftp伺服器上
open $IP
#連接到指定ftp伺服器上,並指定埠
#open $IP $PORT
#登陸ftp伺服器上的用戶名和密碼
#user username password
user Sunrier redhat
#bin表示以二進制方式傳輸
#bin等價於bi,binary等
#另一種方式傳輸是ascii,默認情況下,將文件傳輸類型設置為ASCII
bin
#主動模式的FTP是指伺服器主動連接客戶端的數據埠,被動模式的FTP是指伺服器被動地等待客戶端連接自己的數據埠
#被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTP伺服器的情況.
#因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連接請求通過.
#因此在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作.
#passive表示設置為被動模式的FTP
passive
#cd表示更改ftp伺服器上(即遠程計算機)的工作目錄
cd /home/remote/log/ftpfile
#lcd表示更改本地計算機的工作目錄
#lcd /home/Sunrier/Proj/log/
#put local_file [ remote_file ]
#其中local_file是指定要復制的本地文件,remote_file是指定要復制的遠程計算機上的文件名,
#remote_file為可選項,如果不指定的話是和本地計算機上的文件名同名.
#put表示把本地路徑下的文件復制到FTP伺服器(遠程計算機)上設置的路徑下的文件
put $FULLNAME $DESTFILE
#quit表示結束與遠程計算機的FTP會話,並退出FTP.
#還有個等價的命令為bye(或by)結束與遠程計算機的FTP會話並退出FTP
quit
#here document塊結束
FTPIT
#正式寫這個Shell腳本時,here document中的#和空行都會執行,
#所以為了消除警告最好去掉here document塊中#開頭的語句以及空行,
#暫時我還沒有找到here document中有效的注釋語句的方法.
exit 0
//ftpget.sh
[cpp] view plain
#!/bin/sh
#FileName:ftpget.sh
#Function:從ftp伺服器上下載一個文件到本地計算機上
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20
#$#表示傳遞給此Shell腳本的參數個數
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <remote_dir/filename> <local_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME獲取從ftp伺服器上下載的文件全路徑名
FULLNAME=$1
#DESTDIR獲取從ftp伺服器上下載的文件所存放的本地計算機的目錄路徑
DESTDIR=$2
#remote_filename獲取從ftp伺服器上下載的文件名
remote_filename=`basename $FULLNAME`
#DESTFILE表示下載文件所存放的本地路徑,以及本地保存後的文件名
DESTFILE=$DESTDIR/$remote_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
cd /home/remote/log/ftpfile
get $FULLNAME $DESTFILE
quit
FTPIT
exit 0
#get remote_file [ local_file ]
#remote_file是指定要復制的文件,local_file是指定本地計算機上的文件名,
#local_file為可選項,沒有指定的話則跟remote_file同名。
//20120726改進版本
[cpp] view plain
#!/bin/sh
#FileName:ftpput.sh
#Function:從本地客戶端向ftp伺服器上傳一個文件(添加遠程目錄是否存在判斷功能)
#Version:V0.2
#Author:Sunrier
#Date:2012-07-26
#$#表示傳遞給此Shell腳本的參數個數
#-ne表示不等於
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi
#IP表示ftp的伺服器ip地址
IP=127.0.0.1
#IP=192.168.6.1
#FULLNAME獲取本地文件全路徑名
FULLNAME=$1
#DESTDIR獲取需要上傳的ftp遠程目錄路徑
DESTDIR=$2
#dirname返迴路徑中的目錄部分
#DESTDIR="/home/Sunrier/Proj/log/test.log";
#當PREDESTDIR=`dirname $DESTDIR`
#最終PREDESTDIR="/home/Sunrier/Proj/log"
PREDESTDIR=`dirname $DESTDIR`
SUFFIXDESTDIR=`basename $DESTDIR`
LOCALDIR=`dirname $FULLNAME`
#basename返回一個路徑中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#當local_filename=`basename $FULLNAME`
#最終local_filename="test.log"
local_filename=`basename $FULLNAME`
#DESTFILE表示ftp伺服器的路徑,以及保存後的文件名
DESTFILE=$DESTDIR/$local_filename
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
dir $PREDESTDIR $LOCALDIR/tmp.txt
quit
FTPIT
#find $LOCALDIR -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . ! -name "." -type d -prune -o -type f -iname "*tmp.txt" -print | xargs grep "^d.*$SUFFIXDESTDIR$"
#grep "^d.*$SUFFIXDESTDIR$" \$LOCALDIR/tmp.txt
#grep後面查找字元兩邊加不加引號效果相同
grep ^d.*$SUFFIXDESTDIR$ $LOCALDIR/tmp.txt >/dev/null 2>&1
#$?表示上一個命令的運行結果,0表示成功,其它值表示失敗
#if [ $? != 0 ]
if [ $? -ne 0 ]
then
rm $LOCALDIR/tmp.txt
exit 1
fi
#mkdir創建遠程目錄
#mkdir $DESTDIR
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT
rm $LOCALDIR/tmp.txt
exit 0
[cpp] view plain
注:
FTP伺服器的啟動:
[root@localhost ~]# service vsftpd start
為 vsftpd 啟動 vsftpd: [確定]
FTP伺服器的埠一般默認為21:
[root@localhost ~]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:523 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:601 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
[root@localhost ~]#
在使用system執行Shell腳本時,如system("ftpput.sh"),system返回值低8位為system執行腳本所接收到的信號值,9~16位為Shell腳本所設置的exit退出值
10. linux下如何用FTP下載含有特定文件名的文件
如果命令行下載只能一個一個下,用客戶端直接多個一起下;或者乾脆用sftp下載就可以record* 全部下載了