Bash

有沒有辦法編寫腳本來進行 ftp 登錄,這樣我就不必一遍又一遍地輸入內容?

  • July 28, 2021

我最近通過 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-flftp 在執行指定為參數的命令或從指定文件讀取後直接退出。

引用自:https://unix.stackexchange.com/questions/20560