このブログを検索

2014年11月18日火曜日

FTP の覚書:NLST コマンド

Windows と AIX(UNIX)では、NLST コマンドの応答に違いがあるようです。


Windows の場合、NLST コマンドの応答として、まずは「125」(転送準備完了)が返されます。
これは、NLST コマンドがデータポートを使用してファイルのリスト結果を送信するためでしょう。

続いて、ファイルのリストを受け取り、最後に「226」(転送完了)となります。


AIX の場合、NLST コマンドの応答として、まずは「150」(データ接続開始)が返されます。
これも、NLST コマンドがデータポートを使用してファイルのリスト結果を送信するためでしょう。

続いて、ファイルのリストを受け取り、最後に「226」(転送完了)となるところは、Windows と同じです。


問題はここから。
リストを取る対象のディレクトリにファイルがない場合です。

Windows の場合、ファイルのリストが空でも、同じように動きます。
データポートは開きますが、何も転送せずに終わります。

AIX の場合、NLST コマンドの応答として、「150」ではなく「550」(検出ファイルなし)が返されます。
ディレクトリにファイルがある場合とない場合とでは、結果が異なるわけです。
また、「550」が返された場合、データポートは開かれません。
「550」の応答をもって、NLST コマンドが終了します。