標籤: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指令碼中的使用方法