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 件のコメント:
コメントを投稿