ですから、現時点で興味深い問題があります。 curl(CentOSでは7.15.5)を使用して、リモートFTPサーバーからファイルを取得しようとしています。私たちのクライアントは先週末に何かを変更しました。それは金曜日に機能し、現在は機能していないためです。
CLIクライアントを使用してFTPで転送し、ディレクトリリストを正常に取得できますが、パッシブモードをオフにするには「パッシブ」を発行する必要があります。そうしないと、
421 Service not available, remote server has closed connection
Passive mode refused. Turning off passive mode.
No control connection for command: Transport endpoint is not connected
ftp>
了解しました。明らかに、パッシブモードを無効にする必要があります。マニュアルページを数回読んで、「アクティブ」モードを指定するために-Pを使用する必要があることを理解していますが、ドキュメントから、これによりクライアント(私の)マシンのデータ用のポートが開かれるようです。にストリーミングします。ファイアウォールの背後にあるため、これは機能しません。
これは、CLIクライアントがアクティブモードで動作するため、私が何かを誤解していることを示しています。
Serverfault-kenobiを助けてください、あなたは私の唯一の希望です。
わかった!
キーis-P
を使用しますが、別のポートを開いて接続することはできないため、「明白な」選択を使用する必要があります。
ドキュメントを引用するには:
-curlに制御接続にすでに使用されているものと同じIPアドレスを選択させる
したがって、curlコマンド
curl -u username:password -P - -o output.file ftp://whatever/source.file
-P -
は重要な部分でした。基本的に、curlはデータの転送に使用できる唯一の接続(コマンド接続)を使用します。
やあ!
これ リンク はアクティブとパッシブを非常によく説明しています。
私にとって-それを機能させるために-私はまた--disable-eprt
も追加しなければなりませんでした:
curl --disable-eprt -u username:password -P - ftp://whatever/source.file