


Linux命令:Linux自動FTP的小腳本
cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)
ftp -n open IP_ADDRESS
user USERNAME PASSWORD
ascii(or bin)
put *(or get)
bye
EOF
下面詳細講解以下這段代碼:
1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)
首先將進入你要上傳得文件所存在的目錄,或者是想將某個FTP上的文件下載到的目錄。這樣就免去了在真正進入FTP站點以后,還需要修改本地路徑的麻煩。
2. ftp -n
由于是腳本,因此我們要給此FTP腳本定義一個結束的符號,在這里,定義的結束符是“EOF”。你也可以自己來定義其他的。不過建議用“EOF”,這在絕大多數編程語言中,都表示結束:End Of File。
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
這個符號之前已經講過。當腳本遇到這個符號的時候,它就知道應該結束了。
有個偷懶的辦法是,可以將以上的腳本寫成一個函數,然后再需要的時候調用這個函數即可。
autoftp()
{
cd
ftp -n open IP_ADDRESS
user USERNAME PASSWORD
ascii (or bin:binary)
put (or get)
bye
EOF
}
另外,還有一個需要注意的地方,就是在該段程序的后面,你需要去判斷自動FTP是否成功了——就是你傳送或者獲取是否成功了。這里的判斷也有兩個思路:
1. 如果是獲取,則在本地判斷是否已經成功獲取。如果是傳送,則需要再次調用自動FTP腳本,在FTP服務器正確的目錄去判斷是否傳送成功。不過這樣的辦法顯然是“笨重”的;
2. 通過shell常用的方式:$?來判斷是否成功,如果返回值是0則表示成功,而返回值非0則表示沒有成功——但是,我所說的需要注意的地方,正是這里需要注意的。其實以上代碼,不管是否自動FTP是否成功,返回值其實都是0。這會讓很多人困擾,為什么呢?不要忘記了,其實你最后的代碼腳本是EOF,所以,不管你前面自動FTP傳送還是獲取都是失敗的,其實這個正常結束的符號讓這個腳本“正常結束”了,因此,$?的返回值就是0了。
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解