ftp在shell指令碼中的使用方法

來源:互聯網
上載者:User

標籤:http   io   os   使用   ar   for   檔案   sp   c   

1. ftp自動登入批量下載檔案。

#####從ftp伺服器上的/home/data 到 本地的/home/databackup####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye
!
2. ftp自動登入上傳檔案。

####本地的/home/databackup to ftp伺服器上的/home/data####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
close
bye
!

3. ftp自動登入下載單個檔案。
####ftp伺服器上下載/home/data/a.sh to local /home/databackup####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
get a.sh a.sh 
close
bye
!

4. ftp自動登入上傳單個檔案。
####把本地/home/databachup/a.sh up ftp /home/databackup 下####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
put a.sh a.sh 
close
bye
!

"!"一定要在首行
小結:把以上指令碼另存新檔檔案加入到crontab中即可實現ftp自動上傳、下載檔案。
註解:
1. -n 不受.netrc檔案的影響。(ftp預設為讀取.netrc檔案中的設定)
2. << 是使用即時檔案重新導向輸入。
3. !是即時檔案的標誌它必須成對出現,以標識即時檔案的開始和結尾。

-----------------------------------------------------------------------------------------------

在windows下非常簡單,windows下的ftp用戶端有一個-s參數可以帶一個檔案,把所有在ftp命令列下要輸入的內容照原樣輸入到這個檔案中,用ftp -s去執行就可以。例如:
open 10.60.56.90
whb
123456
get test
close
bye
把這個檔案儲存為autologin.txt。
E:/>ftp -s:autologin.txt
ftp> open 10.60.56.90
Connected to 10.60.56.90.
220 (vsFTPd 2.0.5)
User (10.60.56.90:(none)):
331 Please specify the password.

230 Login successful.
ftp> get test
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test (5 bytes).
226 File send OK.
ftp: 收到 5 位元組,用時 0.00Seconds 5000.00Kbytes/sec.
ftp> close
221 Goodbye.
ftp> bye

E:/>
如果是匿名登入,密碼那一行留空。

在linux下,上面的方法失效。Bruce Ediger在http://www.stratigery.com//scripting.ftp.html這篇文章中詳細介紹了在shell指令碼中使用ftp的方法。簡單總結如下:
方法一:
#!/bin/bash 
SERVER=server
USERNAME=username
PASSWORD=password
ftp -n $server <<SCRIPT 
quote USER $username
quote PASS $password
cd remote_path
lcd local_path
binary 
verbose 
get something
put something
close 
quit 
SCRIPT 
方法二:
#!/bin/bash 
SERVER=server
USERNAME=username
PASSWORD=password
ftp -n $server <<SCRIPT 
user $USERNAME $PASSWORD
cd remote_path
lcd local_path
binary 
verbose 
get something
put something
close 
quit 
SCRIPT 
方法三:使用.netrc
可以用man netrc看這個檔案的配置參數。比如寫如下的.netrc檔案:
machine whb 
login whb 
password 123456 
 
machine node6 
login globus 
password 123456 
需要注意的是,如果在.netrc檔案中使用password設定了ftp登入密碼,那麼除該檔案所有者外,其他使用者對該檔案都不能有讀許可權,否則自動登入會失敗。
[[email protected] ~]$ chmod 600 .netrc 
[[email protected] ~]$ ftp node6 
Connected to node6.jlu.edu.cn. 
220 (vsFTPd 1.1.3) 
530 Please login with USER and PASS. 
530 Please login with USER and PASS. 
KERBEROS_V4 rejected as an authentication type 
331 Please specify the password. 
230 Login successful. Have fun. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp>  

另外,網上有眾多使用expect實現的方法,可以google到。

ftp在shell指令碼中的使用方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.