Bash

FTP bash 腳本的密碼太複雜?

  • June 16, 2011

我已經閱讀了幾個與此問題相關的問題,但似乎沒有一個對我的問題有有效的答案。我只需要編寫一個簡單的 bash 腳本即可通過 FTP 連接獲取幾個文件。

正常的腳本是這樣的

#!/bin/bash
username="myFTPusername"
password="myFTPpass"
ftp -in hostname <<EOF
quote USER $username
quote PASS $password
lcd mylocaldirectory
cd FTPfolder
get filename
bye
EOF

而且我也嘗試過這個命令,在這裡看到

wget -O filename ftp://user:pass@hostname/filename

但它們都不起作用。夠奇怪的,我可以在沒有腳本的情況下毫無問題地訪問,而且我的使用者名和密碼工作正常。但是當我嘗試通過腳本或 wget 命令連接時,我得到一個“登錄錯誤”。

密碼格式是否有某種限制?它有不同的字元,其中一個是 “$”。我唯一的猜測是那個美元符號是腳本中的問題。有什麼想法可以解決嗎?如果我無法更改該 FTP 通行證怎麼辦?

使用 wget(或 curl)可能是您最好的選擇。如果您的密碼包含 shell 元字元(如“$”),則需要在命令行中引用它。例如:

wget -O filename 'ftp://user:pass@hostname/filename'

使用單引號會阻止 ‘$’ 在帶引號的字元串中的擴展。

與其將身份驗證詳細資訊儲存在腳本中,不如嘗試將它們放在~/.netrc中,這應該可以解決 shell 擴展密碼中 $ 字元的任何問題。

引用自:https://serverfault.com/questions/281082