まず、取得した FTP リストに対して自動化されたタスクを実行している場合は、 RFC 959 セクション 4.1.3に記載されているのでNLST
はなく、おそらく以下を参照する必要があります。LIST
名前リスト (NLST)
...
このコマンドは、次の情報を返すことを目的としています。
プログラムでさらに処理するために使用できます。
ファイルを自動的に。
ツイストのドキュメントには次のように書かれていLIST
ます:
ほとんどの一般的なファイル リスト形式に対応できます。
これは私を疑わしくさせます。「対応」するソリューションは好きではありません。LIST
機械処理ではなく、人間が消費することを目的としていました。
ターゲットサーバーがそれらをサポートしている場合は、 RFC 3659 セクション 7で定義されているように優先する必要がMLST
あります。MLSD
7.機械加工のリスト(MLSTおよびMLSD)
MLST および MLSD コマンドは、ファイルを標準化し、
サーバー FTP プロセスによって返されるディレクトリ情報。これらは
コマンドは、その形式が LIST コマンドとは異なります。
reply は厳密に定義されていますが、拡張可能です。
ただし、これらの新しいコマンドはターゲット サーバーでは使用できない可能性があり、Twisted では表示されません。したがってNLST
、おそらくあなたの最善の策です。
問題の核心に関しては、3 つの原因が考えられます。
- 返された結果の処理が正しくありません (あなたが提案したように、またはおそらく他の場所で Twisted に問題がある可能性があります)。
- サーバーにバグがあり、正しい (完全な) 応答を送信していません
- 間違ったコマンドが送信されています (ストレート
NLST
/LIST
ではありそうにありませんが、これらのコマンドに引数が指定された場合、一部のサーバーは異なる反応を示します)
(2) と (3) を排除し、原因が (1) にあることを、何が送信されているかを見ることで証明できます。このオプションが Twisted API または Pure-FTPD サーバーのログ設定の一部として利用できない場合は、tcpdump、snoop、WireShark などのネットワーク スニファを解除する必要がある場合があります (これが許可されている場合)。あなたの環境)。制御接続 (ポート 21) だけでなく、データ接続もトレースする必要があることに注意してください ( LIST
/NLST
コマンドの結果が含まれるため)。WireShark は、プロトコル レベルの分析を実行してくれるので便利です。
幸運を。