我想寫一個在後臺運行ftp的bash腳本。我想以某種方式向它發送命令並接收響應。例如想運行ftp,然後發送它BASH:發送命令到ftp並驗證狀態碼
user username pass
cd foo
ls
binary
mput *.html
並接收狀態碼並驗證它們。我試圖這樣做
tail -n 1 -f in | ftp -n host >> out &
然後讀出文件和驗證。但它不起作用。有人能告訴我正確的方法嗎?非常感謝。
我想寫一個在後臺運行ftp的bash腳本。我想以某種方式向它發送命令並接收響應。例如想運行ftp,然後發送它BASH:發送命令到ftp並驗證狀態碼
user username pass
cd foo
ls
binary
mput *.html
並接收狀態碼並驗證它們。我試圖這樣做
tail -n 1 -f in | ftp -n host >> out &
然後讀出文件和驗證。但它不起作用。有人能告訴我正確的方法嗎?非常感謝。
我會運行一組命令,檢查輸出,然後運行第二組以響應輸出。您可以使用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
謝謝,這是有用的答案。我怎樣才能運行例如只有3個命令,檢查輸出,然後用ftp執行另一組命令?我想保持ftp進程/程序運行(在後臺可能?)並且「與之通信」。換句話說,我想發送一些命令到ftp,回讀輸出,決定下一步該怎麼做,發送一些更多的命令到ftp ... – user1894369
爲什麼你要「談」到FTP服務器而不是簡單地運行命令作爲一個接一個的獨立過程? –
請退後一步並描述您嘗試解決的問題,而不是您認爲的解決方案。 –
很簡單,我只是想使用ftp將一些文件複製到服務器。但是我需要一些條件,根據從服務器獲取的消息(例如,如果此文件比某個日期更舊,替換它)和錯誤處理(如果發生ftp錯誤代碼,刪除所有上載的文件),該做些什麼。我認爲在後臺運行ftp命令並提供命令並讀取消息是解決方案。 – user1894369