Perlで書かれたCGIで別サーバのファイルを読みこむには?
[上に]
[前に]
[次に]
yomi
[E-Mail]
1999/11/11(木) 00:33:23
はじめまして。
質問なのですが、Perlで書かれたCGIで別サーバのファイルを読みこむことはできるのでしょうか?
「できる!」という話も「できない!」という話も聞いたことがあるのですが・・・。
リンク切れチェックのCGIを作りたいので、
ご存知の方、よろしくお願いします。
J.Naka
1999/11/11(木) 00:42:26
インターネットのセキュリティ上は、「出来ない」が望まれる正解らしいです。
が、ソケットとかいう謎の技を駆使すれば、出来るらしいです。
yomi
[E-Mail]
1999/11/11(木) 01:22:53
[[解決]]
J.Nakaさん、すばやいご返答ありがとうございました。
もう一度よく過去のログを検索してみたら、
同じような質問がありました。
http://www2d.biglobe.ne.jp/~gama/cgi/step10.htm
が参考になりました。
また分からないことがあったら質問させていただきますので
よろしくお願いします。
ふじ
1999/11/11(木) 01:25:59
>Perlで書かれたCGIで別サーバのファイルを読みこむことはできるのでしょうか?
できます。
リンク切れチェックに使うのなら HTTP のクライアントですね。
方法としては、
1. LWPのモジュールが使えるならそれを使う。
2. wget というコマンドがあれば、それを Perl から叩く。
3. 誰かが書いたものを拾って来る。
参考:
http://X68000.startshop.co.jp/~68user/
http://www.jkc.co.jp/booksupport/perl-inter/
4. 自分で書く。
等の方法がありますが。
>インターネットのセキュリティ上は、「出来ない」が望まれる正解らしいです。
何故ですか? 理由が分からないんですが。
#HTTPのクライアントを作っちゃいけない、ってこと?
ふじ
1999/11/11(木) 01:26:34
ありゃ、遅かった(^^;
B-Cus
1999/11/11(木) 03:26:21
> Perlで書かれたCGI
一つ言えるのは、タイムアウトのあるシステムの上で
何分で終わるかわからないことをやるってんだから、
根本的に CGI とソケットは相性が悪い。
どうしても CGI 上でやるなら、タイムアウト処理をちゃんと
やった方がいいよ、ってことでしょうか。
以下グチ。
> 1. LWPのモジュールが使えるならそれを使う。
これが一番簡単なんだけど、ふつーのプロバイダはモジュール
入れないですよねぇ。簡単だから教える方としても楽なんだけど、
教えても相手に環境がないから意味がない。
簡単なリンクチェッカ書いたら、それだけで
HTML-Parser-2.22/MD5-1.7/MIME-Base64-2.11/Net-1.0606/libwww-5.36
のモジュールが必要になってしまった。全部標準で perl に入れてくれ〜。
\n
1999/11/12(金) 04:53:45
>>1. LWPのモジュールが使えるならそれを使う。
>これが一番簡単なんだけど、ふつーのプロバイダはモジュール
これを入手して、サーチパスにこれを置いたパスを追加するっての
はダメなんでしょうか?
#自分で試験すれば良いのだけれど、気力ないので知っていたら
#お願いします。m(_ _)m
B-Cus
1999/11/12(金) 05:35:47
確かに個人でインストールはできなくはありません。
telnet でリモートログイン
% tar zxvf MODULE-NAME.tar.gz
% cd MODULE-NAME
% perl Makefile.PL
% make
% make PREFIX=$HOME/modules install
として、スクリプトに
BEGIN {
use Config;
unshift(@INC,"/home/user/modules/lib/perl5/site_perl/$Config{apiversion}/$Config{archname}");
}
を挿入すればいいです (apiversion/archname でいいのかな?)。しかし
telnet 可能
Cコンパイラ使用可能
シェルの操作方法をある程度習得している
tarball (*.tar.gz) を扱える (tar の使い方を知っている)
コンパイル時の make/cc などのトラブルを突破できる
という条件をクリアする必要があり、それをネットワーク上で
手取り足取り教える気力は僕にはありません。
なので、ハードルは高く、教えても結局「無理でした」と言われる
可能性が高いので、これまでモジュールにはあまり触れませんでした。
# もっと簡単なインストール方法があれば知りたい。
翻って、自分が ISP の管理者ならどうか、と考えると、
「AとBとCを入れて」と言われればインストールするかも
しれないけど、「〜が動くように必要なモジュールを入れて」
と言われたら拒否するでしょう。
しかし、動かす前にどんなモジュールが必要かどうかを知る
決定的な方法がないので (これも簡単な方法があれば教えて)、
「ISPの管理者にインストールを頼みなさい」と回答するのも
いまいちだなぁという感じです。
例えば上記のリンクチェッカ、
use HTTP::Status;
use HTTP::Response;
use LWP::UserAgent;
use URI::URL;
ですが、必要なモジュールは
HTML-Parser-2.22/MD5-1.7/MIME-Base64-2.11/Net-1.0606/libwww-5.36
です。
\n
1999/11/12(金) 20:11:33
>なので、ハードルは高く、教えても結局「無理でした」と言われる
>可能性が高いので、これまでモジュールにはあまり触れませんでした。
なるほど、確かにそのとおりですね。
#詳細な説明すいませんです。
他のモジュールに依存性の高いものは、環境に依存するし自己完結型
の物だとソースが大きくなり流用が利かなくなるし・・・
ちなみに、Jcode.pmを試してみましたが、この程度なら簡単ですが
他のものだと確かにちょっと面倒カモです。
結局、初心者にはふじさんの書かれた(3)が一番簡単かな
># もっと簡単なインストール方法があれば知りたい。
これに私も1票(^^;
[上に]
[前に]
[次に]