FTPサーバでNLSTが動いているのか確認したいという話になったのでWindowsでの確認方法を簡単にまとめました(確認したクライアントはWindows 7 Home Premium + telnet、サーバはCentOS 5.6 + ProFTPD 1.3.1です)。
まずコマンドプロンプトをひとつ立ちあげて下記のように入力します(強調されている箇所。返ってくるメッセージはサーバによって変わります)。
C:\Users\user>telnet ホスト名 ポート番号(だいたい21) 220 ProFTPD 1.3.1 Server (ProFTPD) [xxx.xx.xxx.xx] USER ユーザー名 331 Password required for xxxxx PASS パスワード 230 User xxxxx logged in PASV 227 Entering Passive Mode (xxx,xx,xxx,xx,a,b). NLST
PASVの応答メッセージで数字(上記のxxx,xx,xxx,xx,a,bの箇所。xxx,xx,xxx,xxはサーバのIPアドレス。a,bはランダムな数字)が出てきたらNLSTの結果の受信用にコマンドプロンプトを立ち上げ、ホスト名と共にa * 256 + bの値をポート番号として入力して接続します(xxx,xx,xxx,xx,212,11 なら 212 * 256 + 11 = 54283)。
C:\Users\user>telnet ホスト名 ポート番号
接続すると新しく立ち上げた画面にはファイルとディレクトリの一覧が表示され、元の画面には例えば下記のように表示されます。
150 Opening BINARY mode data connection for file list 226-Transfer complete 226 Quotas off
(余談)
Windowsのftpコマンド(ftp.exe)でも確認は可能でした(コマンド送信用にftp.exe, 受信用にtelnetになるだけですが…)。ftpコマンドの場合PASVやNLSTなどはそのまま送信することはできませんが、quoteかliteralを使うと送信できました(quote PASVやquote NLST)。また ftp -d ホスト名
として起動するとlsやcdなどを実行した時の実際に送信されている生コマンドを表示してくれるので諸々の確認がしやすくなります。