Bash
有沒有辦法編寫腳本來進行 ftp 登錄,這樣我就不必一遍又一遍地輸入內容?
我最近通過 ftp 連接廣泛使用遠端系統,因為會話時間很短,以至於當我在本地機器上完成工作時我必須經常重新登錄,所以我需要一種方法來創建自定義命令/ shell 腳本只需一個詞即可登錄 ftp 伺服器,但問題是如何做到這一點。
例如
~$ ftp domainname.com ... Name (domainname.com): MyName ... Password: xxxx ... ftp>
通常,
ftp
命令行客戶端支持配置文件~/.netrc
,您可以在其中配置遠端系統的憑據,例如:machine legacy.system.example.org login juser password keins
然後,您
ftp legacy.system.example.org
不必再重新輸入此資訊。如果您需要進行更多自動化,您可以
ftp
通過管道命令將腳本寫入其中,例如:$ cat pushit.sh # complex logic to set # EXAMPLE_FILE= ftp <<EOF prompt mput $EXAMPLE_FILE quit EOF
當然,如果系統不支持
ssh
,它可能也不支持 ftps - 但如果您需要保護連接,您可以嘗試(例如通過ftp-ssl )。LFTP
一個普通
ftp
命令的替代方法是使用lftp
,因為它為自動登錄和命令執行提供了多種功能。例子:
$ lftp -e 'source ~/login.lftp' $ cat login.lftp open sftp://juser:geheim@backup.example.net cd /path/to/favorite/dir
請注意,此範例顯示了標準OpenSSH sftp 客戶端不支持的SFTP伺服器的自動密碼驗證。
該選項
-e
指示 lftp 在啟動時執行命令並保持互動。這樣的 lftp 腳本也可能來自其他腳本,自動斷開與伺服器的連接等。
相反,with
-c
或-f
lftp 在執行指定為參數的命令或從指定文件讀取後直接退出。