2013-02-27 191 views
0
ftp ipaddress 
bin 
hash 
cd path 
get filename 
quit 

我想在一個shell腳本只有第一行輸入用戶名和密碼,其餘的行後執行要執行這些線路不執行的FTP遠程服務器和控制是停留在FTP >提示如何通過運行shell腳本

回答

0

一旦腳本調用程序ftp,shell將失去控制權,直到ftp程序完成。所以你需要使用一些新技術。一種方法是與程序expect,你可以在這裏得到一個提示:https://stackoverflow.com/a/12598169/4323。另一種方法是在Linux上使用更「可編寫腳本」的FTP客戶端,例如lftp,該客戶端具有特定的功能以實現您要使用的腳本使用。

+0

感謝約翰讓我來試試你的方式,並會回答你回來 – 2013-02-27 14:06:43

0

如果您想在腳本而不是交互式shell中執行此操作,則需要使用非交互式FTP客戶端。 ncftp是你可以檢查出來的。

+0

對不起它不工作是隻是採取ftp和sftp – 2013-02-27 14:20:58

0

或者你可以使用一個shell「here」文檔:

#!/bin/bash 

ftp -in <<EOS 
user pswd 
bin 
hash 
cd path 
get filename 
quit 
EOS 

here文檔通過打開的程序的標準輸入發送的一切,就像你鍵入它在命令行中。請注意,ftp客戶端可能很挑剔,每個人似乎都有自己的一套陷阱,因此可能需要一些實驗和使用man ftp

看起來這又拿出了#2之前,你可能想通過 how to ftp multiple file using shell script

閱讀IHTH

+0

我已經使用了你提供的shell不工作.. – 2013-02-27 14:22:46

+0

我認爲約翰是正確的,因爲一旦它調用ftp的shell失去控制直到ftp程序完成 – 2013-02-27 14:25:02

+0

解決ftp客戶端腳本問題是你可以花幾天的時間。我沒有時間詳細調試這個。我強烈建議你閱讀你的ftp客戶端的手冊頁,並且你可以通過搜索'[unix] ftp'找到你想要查看的任何401問題。我已經包括一個很好的S.O.在我的答案中應該是一個很大的幫助。 **嘗試將調用行更改爲'ftp -in << EOS' **。祝你好運。 – shellter 2013-02-27 14:29:43