FTP.pm

FTP

コマンド一覧

概要

    use Net::FTP;
    $ftp = Net::FTP->new("some.host.name", Debug => 0);
    $ftp->login("anonymous",'-anonymous@');
    $ftp->cwd("/pub");
    $ftp->get("that.file");
    $ftp->quit;

説明

Net::FTPはPerlでRFC959に記述されているFTPの、簡単な クライアントを実装するためのクラスです。RFC959コマンドのサブセットの ためのラッパーを提供します。

概要

FTP はFile Transfer Protocolの略です。これはネットワークで結ばれた マシン間でファイルを転送する手段です。プロトコルはクライアント(その コマンドは、このモジュールによって提供されます)とサーバー(このモジュールでは 実装されません)を定義しています。通信は常にクライアントから開始されます。 そしてサーバーはメッセージとステータスコードを(それに場合によってはデータも) つけて応答します。

FTPプロトコルはサーバーへファイルの送信や取得を可能にします。 それぞれの転送には(クライアント上の)ローカル・ファイルと (サーバー上の)リモート・ファイルが含まれます。このモジュールでは 、1つしか指定されなければ、同じファイル名がローカルとリモートの両方で 使われます。これはローカル・ファイル名を指定しなければ、 リモート・ファイル/path/to/fileを転送することは、そのファイルを ローカルの/path/to/fileに入れようとするということを意味します。

プロトコルは、ファイルを転送中にファイルが受ける、さまざまな標準の 変換も定義しています。これらはASCII, EBCDIC, binary,そして byteです。 ASCIIがデフォルトのタイプで、ファイルの送信者が行の末尾を標準の表現に 変換し、受信者はそのローカルな表現に変換しなおします。EBCDICはファイルが EBCDIC形式に変換されることを示します。Binary(imageとしても知られています) 形式は、データを切れ目のないビット・ストリームとして送信します。 Byte形式はデータをバイトで転送します。2つのマシン間でのバイト・サイズの大きさが 違うかどうかに関わらず、その値は同じままになります。(理論的には- 実際には、あなたが実際に何をするのかわかっている場合にのみ、これを使うべきです)

コンストラクタ

メソッド

特に記述がなければ、全てのメソッドはtrueまたはfalseを返します。 trueが処理が成功したことを意味します。メソッドが値を返すと 宣言しているときには、失敗ではundefまたは空リストを返します。

以下のメソッドは、呼ばれ方によって異なる結果を返すかもしれません。 ユーザーが明示的にpasvあるいはportメソッドを呼び出せば、 これらのメソッドはtrueあるいはfalse値を返します。もし ユーザーがこれらのメソッドのどちらも呼び出さなければ、 結果はNet::FTP::dataconnをベースとしたオブジェクトへのリファレンスに なります。

何らかの理由で、それを生成し必要なときにはresponseメソッドを 呼び出すことを含めて、データコネクションを完全に制御したければ、 ユーザはこれらのメソッドを使ってそうすることができます。

しかしこれらのメソッドは単に、データコネクションを返すことが出来る上記の メソッドの利用に影響を与えるだけです。get, put,put_uniqueそして データコネクションを必要としないものには、なんら影響を与えません。

以下のメソッドは、2つのサーバーがお互いに直接接続できるとき、これら2つの リモート・サーバー間でファイルを転送するために使うことが出来ます。

冒険のためのメソッド

Net::FTPNet::Cmdを継承しています。そのためNet::Cmdで定義 されているメソッドをリモートのFTPサーバーにコマンドを送信するために 使うことが出来ます。

dataconnクラス

Net::FTPで定義されているメソッドのいくつかは、このクラスから派生した オブジェクトを返します。dataconnクラスそのものはIO::Socket::INETクラス から派生しています。そのため通常のIO操作のすべてを行うことが出来ます。 しかし以下のメソッドがdataconnクラスで定義されており、IOはこれらを使って 行われなければなりません。

未実装

以下のRFC959コマンドはまだ実装されていません:

バグの報告

バグ/障害を報告するときには、できる限り多くの情報を入れてください。 セットアップはほとんど全て、それぞれに異なるため、私には障害を再現させる ことが難しいかもしれません。

障害を起こす小さなスクリプトは、おそらく助けになるでしょう。このスクリプトを 特別なオプションDebug = 1>をコンストラクタに渡して実行し、 その出力をバグレポートにつけて送ることも有効でしょう。小さなスクリプトを 入れることが出来なければ、障害を起こすプログラムの実行からのDebugトレースを 入れてください。

作者

Graham Barr <gbarr@pobox.com>

参考資料

Net::Netrc Net::Cmd

ftp(1), ftpd(8), RFC 959 http://www.cis.ohio-state.edu/htbin/rfc/rfc959.html

使用例

Net::FTPの使用例については、これをご覧ください


関連リンク