FTP 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 密码怎么办?

答案1

使用 wget(或 curl)可能是最好的选择。如果您的密码包含 shell 元字符(如“$”),则需要在命令行上将其括起来。例如:

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

使用单引号会抑制引用字符串内“$”的扩展。

答案2

不要将身份验证详细信息存储在脚本中,而是尝试将它们放入~/.netrc,这应该可以解决 shell 扩展密码中的 $ 字符的任何问题。

相关内容