![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
WEB上のレンタルサーバーを複数使用しているのですが、それらの間でファイルをコピーするのに、一旦ローカルPCにダウンロードしてからアップロードするのは不便です。
そこで、ファイル名と送り先のサーバーとユーザー名・パスワード等必要な情報をインプットすればファイルをコピーするようなCGIを設置出来ないかと考えています。
Net::FTPを使えば出来るのかな?とか思って
#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use Net::FTP;
$ftp = Net::FTP->new('サーバー');
$ftp->login("ユーザー名", "パスワード");
$ftp->get("index.html");
$ftp->quit;
exit;
と、やってみましたが
Can't call method "login" on an undefined value at xxxxxxx.
というエラーメッセージがでます。
同じスクリプトをローカルで動かすと問題なく動きます。
ひょっとして、サーバー同士ではファイルコピーは出来ないものなのでしょうか?
No.2ベストアンサー
- 回答日時:
結論から言いますと
アクセス元とアクセス先を逆にして試してはどうでしょうか?
いろいろ試したところ おそらく、CGIを置いているサーバーからのアクセスを
hosts.allow で制限しているのではないだろうかと思います。
http://www.ipa.go.jp/security/fy12/contents/crac …
うちの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行は必要ありませんね
umasikajiro様
大当たりでした。
逆にすると確かにOKです。
片方のサーバーがアクセス制限している様ですね。
やりたい方向と逆なのですが、それは運用を考えたり、サーバーを選んだりすればいいわけですから、やりようはあると思います。
この件はこれでクローズさせていただきます。
どうもありがとうございました。
No.1
- 回答日時:
コマンドラインから実行する限り問題なく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の部分はサーバーのドメイン名です。
途中までは動いているみたいですが、サーバー側の問題でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- ドメイン・サーバー・クラウドサービス 自作サイトをサーバーにアップロードしたのですが… 2 2022/11/08 18:12
- その他(インターネット接続・インフラ) 楽天ひかりでホームページアップロードが出来ない 1 2022/07/30 10:02
- サーバー ECサイトのFTPサーバーに使わないファイル20GBくらいがあるのですが、削除したら表示速度やページ 2 2022/12/20 08:45
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- サーバー FFFTPで特定サイトだけUploadできない 4 2022/08/27 14:53
- ホームページ作成・プログラミング Adobe DreamweaverでのサイトのFTP 2 2023/03/05 11:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンのグループ化
-
掲示板のスレッドが消えた!?
-
ユーザの所属するグループを取...
-
AWSTATSの組み込みについて 無...
-
WEBデザイナーの方にお聞きした...
-
ホームページを製作しています...
-
HPを作っているんですが…
-
xamppのつづきですが
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
ApacheでのCGIについての質問
-
特定のCGIだけ、作動するかわり...
-
表示画面が真っ白になる場合、...
-
HTTP 501未実装 エラーについて
-
CGIの起動が遅い
-
C言語のapacheの設定
-
CGIでの500エラー
-
VBAを使用して、外部サーバのフ...
-
Apacheでphpとcgiを使いたいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラジオボタンのグループ化
-
ASPから既存のexcelブックを開...
-
MT/カスタムフィールドでのPDF...
-
掲示板のスレッドが消えた!?
-
ホームページのレイアウトが崩...
-
WEBデザイナーの方にお聞きした...
-
なぜかカウンターのパーミッシ...
-
サーバーのエクセルファイルを...
-
DW4でのサーバー管理に関する...
-
サーバー間でファイルコピーしたい
-
Web開発の完全素人です。 よけ...
-
拡張子.vmのWeb文書ファイルをI...
-
SQL文の書き方を教えてください。
-
さくらサーバーにサイトがアッ...
-
FTPサーバー上のデータにADO接...
-
マイ ネットワーク\\サーバーA(...
-
index.htmlからCGIへリンクを貼...
-
ユーザの所属するグループを取...
-
AjaxとDOMの違いを理解できませ...
-
FTPを使わずにHTTP経由でiアプ...
おすすめ情報