2013-05-26 63 views
-2

我想寫一個在後臺運行ftp的bash腳本。我想以某種方式向它發送命令並接收響應。例如想運行ftp,然後發送它BASH:發送命令到ftp並驗證狀態碼

user username pass 
cd foo 
ls 
binary 
mput *.html 

並接收狀態碼並驗證它們。我試圖這樣做

tail -n 1 -f in | ftp -n host >> out & 

然後讀出文件和驗證。但它不起作用。有人能告訴我正確的方法嗎?非常感謝。

+0

請退後一步並描述您嘗試解決的問題,而不是您認爲的解決方案。 –

+0

很簡單,我只是想使用ftp將一些文件複製到服務器。但是我需要一些條件,根據從服務器獲取的消息(例如,如果此文件比某個日期更舊,替換它)和錯誤處理(如果發生ftp錯誤代碼,刪除所有上載的文件),該做些什麼。我認爲在後臺運行ftp命令並提供命令並讀取消息是解決方案。 – user1894369

回答

1

我會運行一組命令,檢查輸出,然後運行第二組以響應輸出。您可以使用here-documents作爲命令集,使用command substitution來捕獲變量中的輸出,例如,像這樣:

output=$(cat <<EOF | ftp -n host 
user username pass 
cd foo 
ls 
binary 
mput *.html 
EOF 
) 

if [[ $output =~ "error message" ]]; then 
    # do stuff 
fi 
+0

謝謝,這是有用的答案。我怎樣才能運行例如只有3個命令,檢查輸出,然後用ftp執行另一組命令?我想保持ftp進程/程序運行(在後臺可能?)並且「與之通信」。換句話說,我想發送一些命令到ftp,回讀輸出,決定下一步該怎麼做,發送一些更多的命令到ftp ... – user1894369

+0

爲什麼你要「談」到FTP服務器而不是簡單地運行命令作爲一個接一個的獨立過程? –