なぜ1つのスクリプトではカール-nが失敗しますが、他のスクリプトでは失敗しないのですか?

なぜ1つのスクリプトではカール-nが失敗しますが、他のスクリプトでは失敗しないのですか?

なぜ1つのスクリプトではカール-nが失敗しますが、他のスクリプトでは失敗しないのですか?

MacOS High Sierra で動作するカール 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ファイルは1つだけです。明らかに、これはスクリプトが正常に使用されるので大丈夫です。カールコードとホスト変数は同じです。実際、最初のスクリプトのコードは2番目のスクリプトから直接コピーされます。

1つのカールコマンドが.netrcファイルを使用できますが、他のコマンドが利用できない理由を見つける方法は? 2番目のスクリプトにはカールが失敗する何かがあるはずですが、それが何であるかはわかりません。

答え1

.netrc問題はファイルの履歴にあります。最初のホストには使用できますが、2番目のホストには使用できません。あなたができることは、2番目のホストにこのようなレコードを追加することです。予想される形式は次のとおりです。

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>

関連情報