Bash
FTP bash 腳本的密碼太複雜?
我已經閱讀了幾個與此問題相關的問題,但似乎沒有一個對我的問題有有效的答案。我只需要編寫一個簡單的 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 擴展密碼中 $ 字元的任何問題。