ファイアウォール越えをする時の、PerlのFTPモジュールの使い方


ジャンル:パソコン

トップ


PerlでFTPプログラムを作る際、パッシブモードが原因で、うまくプログラムが動かない方必見です。
root権限でrsyncの利用により、サーバ間でファイルを移動し、ファイルのバックアップを行っていたが、sshのrootログインが禁止になったので、FTPでファイルを移動するプログラムに書き換えて欲しいという依頼がありました。
Perlには、FTPモジュールという便利なモジュールがあり、簡単にFTPアクセスを行うプログラムを書くことができます。そこで、

 use Net::FTP;
 open (STDERR, ">>エラー出力ファイル名");
 $ftp=Net::FTP->new(サーバーIP)||warn("Could't connect host.\n");
 $ftp->login(ユーザー名,パスワード)||warn("login failed.\n");
 $ftp->cwd(接続先でのファイルのあるディレクトリ);
 $ftp->get(移動するファイル名)||warn("file GET failed.\n");
 $ftp->quit;
 close STDERR;

として、アイ・コンピュータサービスから、プログラムを実行したところ、うまくファイルをGETすることができました。ところが、お客様の環境でプログラムを実行すると、うまくファイルをGETすることができません。サーバ間に、 SonicWALLが入っているのが原因で、passiveモードでしか、FTPのやり取りができないのです。
FTPモジュールには、pasv()メソッドがあり、『$ftp->pasv()』をプログラムに追加したところ、一応プログラムはまわるようになりましたが、ファイルGETの箇所でエラーが発生します。
悩んだあげく、Passiveコンストラクタを使用したところ、うまくファイルをGETすることができました。Passiveコンストラクタは、0以外の値を設定すると、全てのデータ転送はパッシブモードを使って行われるとのことなので、1を設定してみました。
以下は、PASVモードでFTP接続する時のプログラムのサンプルです。『Passive => 1』を、3行目に付け加えます。

 $ftp=Net::FTP->new(サーバーIP, Passive => 1)||warn("Could't connect host.\n");

pasv()メソッドの使い方をよく調べていないのですが、悩む前に、Passiveコンストラクタを利用した方が、手っ取り早いです。2005/2/15

参考:vsftpdでTCP 20番から待ち受けポートを変更



■ホームページ・インターネット

■パソコン・サーバ

■スペシャルリンク

ビデオ→DVDダビング
ウイルス駆除 ファイル救出
絵手紙きよしのちいさな展覧会
千葉市貸事務所
精神病院磯ヶ谷病院
建築設計事務所千葉市
千葉ノーミ株式会社
自宅で酵素風呂
介護スキンケア百歳酵素
お琴・筝の楽譜、曲集
サンキコーポレーション
DVDコピーサービス 短納期 千葉
DVD 劣化 寿命 修復、千葉市
パソコン・ネットワーク設定 千葉市
アクセスアップのリンク
自宅で手打ちそば 蕎麦作り
ホームページ作成 千葉市
Web広告 バナー広告
データ 復旧 千葉市 ハードディスク
Linkstation データ復旧 千葉市
無料レンタルサーバ比較
生活に役立つ情報
最新ゲームやってみた
防犯カメラの取り付け工事 千葉
誘導灯・非常灯・非常用照明器具のバッテリー・交換電池 価格 通販購入
百人一首 決まり字 和歌意味
釣り 堤防 防波堤ちょい投げ

ホームページ制作
CGI・JavaScript・プログラム
アクセスアップ・自動リンク
相互リンク・SEO対策

Windows
Linux
セキュリティ

■サービス・お店・会社

■ショッピング

レストラン・飲食店
弁護士・司法書士・行政書士・会計士・税理士
病院
不動産・賃貸
会社

パソコン・家電
雑貨・衣料品
食品・飲料
美容・健康食品

■趣味・生活

写真・絵画
スポーツ
テレビ・アニメ・芸能・映画
美容・健康・ダイエット
習い事・お稽古・資格
防犯・防災


Powered by アイ・コンピュータサービス

お役立ち情報:次の話題
022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061