ftp ipaddress
bin
hash
cd path
get filename
quit
我想在一個shell腳本只有第一行輸入用戶名和密碼,其餘的行後執行要執行這些線路不執行的FTP遠程服務器和控制是停留在FTP >提示如何通過運行shell腳本
ftp ipaddress
bin
hash
cd path
get filename
quit
我想在一個shell腳本只有第一行輸入用戶名和密碼,其餘的行後執行要執行這些線路不執行的FTP遠程服務器和控制是停留在FTP >提示如何通過運行shell腳本
一旦腳本調用程序ftp
,shell將失去控制權,直到ftp程序完成。所以你需要使用一些新技術。一種方法是與程序expect
,你可以在這裏得到一個提示:https://stackoverflow.com/a/12598169/4323。另一種方法是在Linux上使用更「可編寫腳本」的FTP客戶端,例如lftp
,該客戶端具有特定的功能以實現您要使用的腳本使用。
如果您想在腳本而不是交互式shell中執行此操作,則需要使用非交互式FTP客戶端。 ncftp是你可以檢查出來的。
對不起它不工作是隻是採取ftp和sftp – 2013-02-27 14:20:58
或者你可以使用一個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
我已經使用了你提供的shell不工作.. – 2013-02-27 14:22:46
我認爲約翰是正確的,因爲一旦它調用ftp的shell失去控制直到ftp程序完成 – 2013-02-27 14:25:02
解決ftp客戶端腳本問題是你可以花幾天的時間。我沒有時間詳細調試這個。我強烈建議你閱讀你的ftp客戶端的手冊頁,並且你可以通過搜索'[unix] ftp'找到你想要查看的任何401問題。我已經包括一個很好的S.O.在我的答案中應該是一個很大的幫助。 **嘗試將調用行更改爲'ftp -in << EOS' **。祝你好運。 – shellter 2013-02-27 14:29:43
感謝約翰讓我來試試你的方式,並會回答你回來 – 2013-02-27 14:06:43