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票(^^;

[上に] [前に] [次に]