shell實現ftp命令示例

2021-06-16 08:33:09 字數 2224 閱讀 8581

一、shell指令碼示例:

cd /path_you_want_to_upload(download)

ftp -niv <<- eof

open ip_address

user username password

ascii(or bin)

put *(or get)

byeeof

下面詳細講解以下這段**:

1. cd /path_you_want_to_upload(download)

2. ftp -niv <<- eof

由於是指令碼,因此我們要給此ftp指令碼定義乙個結束的符號,在這裡,定義的結束符是「eof」。你也可以自己來定義其他的。不過建議用「eof」,這在絕大多數程式語言中,都表示結束:end of file。

-v:顯示

遠端伺服器的所有響應資訊;

-n:限制ftp的自動登入,即不使用;

-i:關閉多個檔案傳輸時的互動過程;

3. open ip_address

表示連線ftp站點,這裡的ip_address就是ftp站點的ip位址。

4. user username password

這是你進入該ftp站點的使用者名稱和密碼。以上兩個結合起來,就相當於我們通過瀏覽器進入ftp站點時候,經常使用的ftp://username:password@ip_address的辦法。

5. ascii(or bin)

我們都知道ftp傳送有兩種方式:ascii和binary。這裡就是指定你要傳送的方式。這很重要,因為這將決定你傳送或者獲取的檔案是否正常可用。

6. put *(or get)

put *表示將第一條cd進入的路徑下所有的檔案都傳送到剛剛連線進入的ftp站點。當然,你也可以指定某乙個或者幾個檔案,而不一定是所有的。而get則表明是將剛剛進入的ftp站點那個ftp跟目錄下的檔案獲取到本地——第一條cd命令進入的那個路徑下。當然,如果你所需要的檔案不在ftp的根目錄下,在使用這個命令之前,你還要使用cd命令來修改一下ftp站點的當前路徑。

7. bye

完成應該完成的工作以後,當然就是斷開和ftp站點的連線了。

8. eof

這個符號之前已經講過。當指令碼遇到這個符號的時候,它就知道應該結束了。

關於shell指令碼實現的ftp傳輸的返回值問題:

有乙個需要注意的地方,就是在該段程式的後面,你需要去判斷自動ftp是否成功了——就是你傳送或者獲取是否成功了。這裡的判斷也有兩個思路:

1. 如果是獲取,則在本地判斷是否已經成功獲取。如果是傳送,則需要再次呼叫自動ftp指令碼,在ftp伺服器正確的目錄去判斷是否傳送成功。不過這樣的辦法顯然是「笨重」的;

2. 通過shell常用的方式:$?來判斷是否成功,如果返回值是0則表示成功,而返回值非0則表示沒有成功——但是,我所說的需要注意的地方,正是這裡需要注意的。其實以上**,不管是否自動ftp是否成功,返回值其實都是0。這會讓很多人困擾,為什麼呢?不要忘記了,其實你最後的**指令碼是eof,所以,不管你前面自動ftp傳送還是獲取都是失敗的,其實這個正常結束的符號讓這個指令碼「正常結束」了,因此,$?的返回值就是0了。

二、ftp命令

1.檢視ftp伺服器上的檔案

dir 命令:顯示目錄和檔案列表。

ls 命令:顯示簡易的檔案列表。

cd 命令:進入指定的目錄。

dir命令可以使用萬用字元「*」和「?」,比如,顯示當前目錄中所有擴充套件名為jpg的檔案,可使用命令 dir *.jpg。

cd命令中必須帶目錄名。比如 cd main 表示進入當前目錄下的main子目錄,cd .. 表示退回上一級子目錄。

2.傳輸型別

type 命令:檢視當前的傳輸方式。

ascii 命令:設定傳輸方式為ascii碼方式。

binary 命令:設定傳輸方式為二進位制方式。

mdelete命令:批量刪除檔案

4.結束命令

close 命令:結束與伺服器的ftp會話。

quit 命令:結束與伺服器的ftp會話並退出ftp環境。

bye 命令:結束與伺服器的ftp會話並退出ftp環境。

5.其它命令

status 命令:顯示當前ftp狀態

prompt 命令: 切換互動式指令,預設開啟on/off(使用 mput/mget 時不用每個檔案皆詢yes/no)

delete 命令: 刪除遠端主機中的檔案

6.其它ftp使用技巧

**:參考:

shell實現ftp自動備份

功能 環境 倆臺機器都是centos4.5 x86 1.ftp伺服器主機資訊 ftp伺服器主機名server vftp服務端 vsftp 2.0.1 5.el4.5 vftp伺服器ftp目錄預設是系統使用者所在目錄 這裡的使用者為ftptest,家目錄為 home ftptest ip 192.16...

shell指令碼實現ftp自動備份

ftp命令把遠端計算機上的檔案傳輸到本地計算機時,需要和使用者互動。怎樣使互動過程自動化呢?利用here文件 bin sh ftp ivn 210.29.28.124 解釋 i 關閉多檔案傳輸過程中的互動提示,所以不會再有讓使用者輸入使用者名稱和密碼的提示 n 阻止了初始連線時的自動登入 v 將ft...

用二句Shell命令實現FTP批量上傳資料夾

實現 如下 bin bash updir root tmp 要上傳的資料夾 todir tmp 目標資料夾 ip 127.0.0.1 伺服器 user username ftp使用者名稱 password passwd ftp密碼 sss find updir type d printf todir...