- ベストアンサー
サーバー間でファイルコピーする方法は?
- 複数のレンタルサーバー間でファイルをコピーする方法を知りたい
- ローカルPCを経由せずにサーバー間でファイルを直接コピーする方法はあるか
- Net::FTPを使用してサーバー間でファイルコピーを試みたが、エラーメッセージが表示される
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
結論から言いますと アクセス元とアクセス先を逆にして試してはどうでしょうか? いろいろ試したところ おそらく、CGIを置いているサーバーからのアクセスを hosts.allow で制限しているのではないだろうかと思います。 http://www.ipa.go.jp/security/fy12/contents/crack/soho/soho/chap2/freebsd/remote.html うちのlinux上にあるproftpdではproftpd.confを、いくらいじっても同じ現象は再現できませんでしたが 上記のページを参考に/etc/hosts.denyに ALL: ALL: twist /bin/echo "You are not welcome to use %d from %h." と記述してからtelnetで接続してみると You are not welcome to use in.telnetd from **.**.**.**. Connection closed by foreign host. となりました。 あと#1の投稿の訂正(このままでも動くがちょっと変) >もしCGIでするのなら >use CGI::Carp qw(fatalsToBrowser); #1の例だと use CGI行は必要ありませんね
その他の回答 (1)
- umasikajiro
- ベストアンサー率67% (545/803)
コマンドラインから実行する限り問題なくGETできるようでしたけどねえ? とりあえず以下のように変えてみたら? $ftp = Net::FTP->new("www.taro.net", Debug => 1); $ftp->login("tarou", "passwrd"); $ftp->cwd("/home/tarou/public_html/"); $ftp->get("index.html"); $ftp->quit; もしCGIでするのなら use CGI::Carp qw(fatalsToBrowser); print"Cache-Control: no-cache\n"; print"Pragma: no-cache\n"; print"Content-type: text/html;charset='Shift_jis'\n\n"; print"<HTML>\n"; print"<h1>FTPTEST</h1><pre>\n"; open(STDERR, ">&STDOUT"); use Net::FTP; 以下略 あたりで試してみたらどうかな? あとレンタルサーバーなどではそもそも、そのサーバーから他のサーバーへのアクセスを制限している場合も有りますね ラピッドサイトとかは昔いじったかぎりではそうでした
補足
umasikajiro様、早速ご回答ありがとうございます。 「コマンドラインから実行する限り問題なくGETできるようでしたけどねえ?」というのは、ローカルPCからのGETの話でしょうか? 私のマシン上でアパッチを動かし、その上でスクリプトを動かす限りGET出来ています。 レンタルサーバー上だとlogin部分でエラーが出る状況です。 上記の様に変えてみたら、loginエラーの前に FTPTEST Net::FTP>>> Net::FTP(2.75) Net::FTP>>> Exporter(5.58) Net::FTP>>> Net::Cmd(2.26) Net::FTP>>> IO::Socket::INET(1.28) Net::FTP>>> IO::Socket(1.28) Net::FTP>>> IO::Handle(1.24) Net::FTP=GLOB(0x823a814)<<< You are not welcome to use in.proftpd from yyyyyy. というエラーメッセージが出ています。 yyyyyyの部分はサーバーのドメイン名です。 途中までは動いているみたいですが、サーバー側の問題でしょうか?
お礼
umasikajiro様 大当たりでした。 逆にすると確かにOKです。 片方のサーバーがアクセス制限している様ですね。 やりたい方向と逆なのですが、それは運用を考えたり、サーバーを選んだりすればいいわけですから、やりようはあると思います。 この件はこれでクローズさせていただきます。 どうもありがとうございました。