为什么curl -n 在一个脚本中失败,而在其他脚本中却失败?

为什么curl -n 在一个脚本中失败,而在其他脚本中却失败?

为什么curl -n 在一个脚本中失败,而在其他脚本中却失败?

在 MacOS High Sierra 上运行的curl 7.67.0

一个脚本中包含以下代码:

host="ftp.xxxxxx.com/public_html/"
/opt/local/bin/curl -n -T $file $host -v

给了我这个:

> USER xxxx
< 331 User xxxx OK. Password required
> PASS xxxxxxxxxx
< 230 OK. Current restricted directory is /

另一个脚本中的以下代码:

host="ftp.xxxxxx.com/public_html/"
/opt/local/bin/curl -n -T $file $host -v

给了我这个:

* Couldn't find host ftp.mgnewman.com in the .netrc file; using defaults
<snip>
> USER anonymous
< 331 User anonymous OK. Password required
> PASS [email protected]
  0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0< 530 Login authentication failed
* Access denied: 530

这两个脚本都是 bash 脚本,位于同一台机器的同一目录中。只有一个 .netrc 文件。显然这是可以的,因为一个脚本成功地使用了它。卷曲代码和主机变量是相同的。事实上,第一个脚本中的代码是直接从第二个脚本中复制的。

如何弄清楚为什么一个curl 命令可以使用.netrc 文件而另一个命令不能?第二个脚本中一定有某些东西导致卷曲失败,但我不知道它可能是什么。

答案1

.netrc你的问题是文件中的记录。您可以为第一台主机使用它,但不能为第二台主机使用。您可以做的就是为第二个主机添加这样的记录。预期的格式是:

machine <host name>
login <user-email or anonymous>
password <user-password or some mail for anonymous access>

根据操作系统的不同,所需的记录可以是:

machine <host name> login <user-email or anonymous> password <user-password or some mail for anonymous access>

相关内容