3.29.2012

Perl: Is Net::FTP working in passive mode?

Perl: Net::FTP の通信モードの確認

Perl で FTP クライアントを実装する際には、パッシブモード/アクティブモードのどちらで動作しているのかを意識する必要がある。
というのも、libnet のバージョンによってデフォルトの動作が異なっているからだ。

デフォルトの動作を知るには、Net/Config.pm の「ftp_int_passive」を見ればよい。

libnet-1.20 (02 Feb 2007)ではデフォルトは 0、つまりアクティブモードになっているが、
http://cpansearch.perl.org/src/GBARR/libnet-1.20/Net/Config.pm

libnet-1.21(19 May 2007)では 1、パッシブモードになっている。
http://cpansearch.perl.org/src/GBARR/libnet-1.21/Net/Config.pm

・Config.pm の例(抜粋)
http://cpansearch.perl.org/src/GBARR/libnet-1.22/Net/Config.pm

%NetConfig = (
  nntp_hosts      => [],
  snpp_hosts      => [],
  pop3_hosts      => [],
  smtp_hosts      => [],
  ph_hosts        => [],
  daytime_hosts   => [],
  time_hosts      => [],
  inet_domain     => undef,
  ftp_firewall    => undef,
  ftp_ext_passive => 1,
  ftp_int_passive => 1,
  test_hosts      => 1,
  test_exist      => 1,
);

また、通信状況のログから確認を行うためには、Net::FTP のコンストラクタで「Debug => 1」と指定すれば簡単だ。

参考:
・ftpのpassiveモード(PASVモード)って何ですか?
http://www.rtpro.yamaha.co.jp/RT/FAQ/TCPIP/ftp-passive-mode.html

0 件のコメント:

コメントを投稿