• ベストアンサー

他のサーバーのファイルを読む

ある人(私とは別のサーバー)にCGIを配布する予定です。CGIにアクセスすると、私のサーバーに存在するデータファイルを読んで、データが更新されているかチェックする、そんな機能がほしいのですが、一般的にどういう技術を使っているのか全く分かりません。簡単にアドバイスいただけたらと思います。よろしくお願いします。言語はPerlです。

  • CGI
  • 回答数5
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • Sephy
  • ベストアンサー率35% (7/20)
回答No.3

参照したいファイルは別サーバーにあるんですよね。 Socket使ってサーバーにアクセスかけちゃダメですか? 私のサイトに「Get Site with Socket」というスクリプトがあります。 指定したアドレスのファイルの中身を取得するものなのですが、参考になれば。 ただSocketが利用できる環境じゃないとどうしようもないので・・・

参考URL:
http://w3.to/sephy
katsudon
質問者

お礼

ありがとうございます! Socketという名前は知っているのですが、何をするものなのかも知らないものでよく分からないのですが、基本的にたぶんそれでできるようですね。 早速スクリプトをDLして自分の別サイトのデータファイルのURLを入力したのですが、リクエストを送信できませんでしたとなりました。なんでだろ? Socketについて記述のあるサイトを探して、深く調べてみたいと思います。それで全く進歩が無ければもう一度ここで質問したいと思います。 まだまだアドバイスは受けていますので何かありましたらお願いいたします。

その他の回答 (4)

回答No.5

 HTTPでアクセスするのであれば、LWPモジュールを使えば簡単ですよ。  モジュールについては、CPAN(http://search.span.org/)で調べれます。   LWPモジュール等については、下のURLを参考にどうぞ。

参考URL:
http://www.bekkoame.ne.jp/~bero/docj/module/
katsudon
質問者

お礼

ありがとうございます。 早速参考URL拝見しました。 いろいろなモジュールがあることは知っていましたが、 すべてについて日本語で解説があるのは嬉しいですね。 あのサイトを作った人には感謝しなければいけません。 モジュールについて全てが理解できてないので まだLWPのよさというのがわかりませんが、 とりあえず、一般的なSocketから入っていきたいと思います。 将来的にこのスクリプトのメンテの仕事を他の人に受け継ぐかもしれません。 (私自身はKENTさんのようなスクリプト開発を趣味にしている人間ではないので) そうした時に次の人が私のような初心者でも分かりやすいように、 処理が遅くても、なるべく基本から外れない単純な内容で 書いていきたいと思っています。

回答No.4

 データをどのように受け渡すかが問題でしょうが、簡単にしようと思うなら FTPやHTTPを利用してはいかがでしょうか?CGI配布先から katsudon さんの HTTPやFTPサーバーに接続してデータを取ってくるのであれば、サーバー側の 準備も簡単にできると思います。クライアント側(CGI設置先)は、いずれにし てもモジュール等を使えば簡単にファイル取得できますよ。  ↑(モジュール等)について、質問がれあれば、またどーぞ。

katsudon
質問者

お礼

ありがとうございます! 掲示板やカウンターを作るだけだとあまりFTPやソケットを必要としないので、 具体的にどういうことをするのか全く分からない状態です。 ソケットについては詳しい解説のあるサイトを早速見つけたのですが、 自分のモノにするにはまだ時間がかかりそうです。FTP、HTTPも同様の状態で それぞれの利点を理解するには時間がかかります。 とりあえずFTP,HTTPについて具体的な方法を記述したサイトを探してみます。 ゆっくり進めていきますのでまたつまづいたらよろしくお願いします♪

katsudon
質問者

補足

やっと概要がわかりました。HTTPでウチのサーバーにアクセスしてもらうことにしました。できれば一点知りたいのですが、Socketモジュールというのは一般的にすでに実装されているものなんでしょうか?特にモジュールを用意していないのに、ソケット接続は動作しているのですが・・・。ん?Perl5に含まれているのですか?

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

「CGIの走行するサーバ以外のサーバーに存在するファイルの更新確認」をしたいのですよね。 それとも「単にファイルの更新確認したい」ですか? 「katsudonさんのサーバーにCGIをおいてリモートで動かす」と言うのはダメなんですか? 各サーバのOSが知りたいところですね。 あと、katsudonさんのサーバにデーモンを追加して良いかどうかも。

katsudon
質問者

補足

ありがとうございます!もうすこしくわしく説明します。 私の作っているのは地図サイトMapFanWebのような(超ローカルな)地図表示CGIです。半不特定多数の人に配布して(配布するときにユーザー登録してもらう)、ローカル地図コンテンツを作ってもらいます。 そのCGIには、CGIユーザー通しを結ぶリンク(ローカル地図通しを結ぶリンク)を装着したいんです。簡単に言うと歌舞伎町サイトへのリンクだったり、センター街サイトへのリンクだったりです。 ただ、地図ソフトMapFanの使用条件の兼ね合いから私のサーバーに各ユーザへのリンクページを用意してアクセスしてもらうのではなく、登録情報を各ユーザーのCGIに配信してCGI側で表示してもらいたいのです。 というわけで、だれかがCGIにアクセスすると私の(正確には開発元は私なんですが配布元、登録先は別の人です)サーバーへ登録情報の入ったファイルを読みに行くということが必要になります。 私のサーバーから(リモートということになりますか?)積極的に配信するという方法があるのでしたら、それでも構いません。まあできればこちらがユーザーのサーバーに介入することはしたくないですが。 配布元が私ではないので、彼が配布元をやめたいといっても代わりの人のサーバーで動かせるよう、なるべくどんなサーバーでも動く技術を使いたらと思います。

回答No.1

ぱっと思いつくのはファイルの更新日時を比較して、 前回と違っていればメールなり、ポップアップウィンドウなりで知らせる方法でしょうか。 PerlはわかるんですがCGIは組んだ事がないので解らないのですが、アクセスするたびに更新日時をクッキーに保存しておけば先程挙げた方法でOKかと。

katsudon
質問者

補足

ありがとうございます!すみません、説明不足でした。分かりやすいようにと思ったのですが簡単に書きすぎました。 更新されているかチェックするのではなく、正確にはデータファイルの中身を読み込んで出力するということです。

関連するQ&A

  • 他のサーバーにあるファイルの存在確認

    perlで他のサーバーにあるファイルが存在するか確認したり、それに似たようなことをすることは可能でしょうか? どなたかご回答お願いします。

    • ベストアンサー
    • Perl
  • なんでサーバーエラー??

    CGIをはじめて、まだまだ初心者です。 プログラムは、MS-DOSで構文チェックして、 OKとでるのに、サーバーエラーっておかしくないですか? もちろん、サーバは、自分のパソコンに アパッチいれて、Perlいれて確認するんですが、 何がエラーなんでしょう・・・? まだ、高級なCGIなど作れないので、 フリーのスクリプトをDLしてきました。 まず、構文チェックOK。 そして、Perl開いたまま、 ブラウザにアクセスします。 そうしたら、サーバーエラーとなるのです。 何を変えていったらいいのか教えて下さい。 (自分で作った簡単なアンケートフォーム とかは成功しました)

    • ベストアンサー
    • CGI
  • 自前サーバでCGIを~

     まずはLAN内だけで掲示板などのCGIを実行できるようにしてみよう、ということでApacheを使ってCGIの設定をしているんですが、ブラウザからCGIファイルを起動してもInternal Server Errorと出てしまいます。よってそれ以前ということで・・・  コマンドラインから「perl test.cgi」のようにCGIファイルを実行してみるとちゃんと動作するんですが、「type -a perl」で検索したフルパスをそのままCGIファイルに「#!/usr/bin/perl」などのように書いても、ファイルがコマンド化されてくれません。でも、perlの実行ファイルは存在していました。  これは、どうすれば解決できるのでしょうか?

  • おすすめレンタルサーバー

    レンタルサーバーを探しているのですが、 希望する機能としては、 telnet等を利用して直接シェル操作が出来ることと、 perlの他にC言語をCGIとして利用できる等の 出来るだけUNIX環境の自由度の高さです。 色々探した結果、 http://www.willnet.ne.jp/ http://home.isle.ne.jp/ というレンタル業者を見つけることが出来、 現在の所willnetにしようかと思っておりますが、 他におすすめの業者はないでしょうか? 追記ですが、 C言語をCGIとして利用可能と表記していなくとも、 telnetアクセスが許可されていれば可能なのでしょうか? サーバーをレンタルした経験がないので分からないのですが、 どうぞ宜しくお願い致します。 失礼致します。

  • サーバー上の内容が更新されません【ロリポップ】

    cgiにてアクセス制限をかけたディレクトリ内の htmlファイルを更新しようとしているのですが、 FTPでアップしても更新できません。 一旦、サーバー側ファイルを全部削除してアップロードしなおしたんですが、うまくいきませんでした。 使用しているアクセス制限cgiは WEB POWER様にて配布されている「ディレクトリ・ゲイト」です。 http://www.webpower.jp/websofts/others/web_protection/directory_gate/ サーバーはロリポップを独自ドメインで契約しています。 階層構造は下記の通りです。 root/  ├index.htm  ├image/  └cgi-bin/   └directory_gate/    └privete_html/     └index.htm ←このファイルの更新がうまくいきません。 皆様のお力添えをよろしくお願い致します。

    • ベストアンサー
    • HTML
  • サーバで上手く動かない?

    こんばんわ。 お世話になっています。 アクセス集計を行うCGIがあるんですが、ローカルでちゃんと動作確認できたのにサーバにあげたら上手く動いてくれません。 CGIはあるログファイルからデータがあればカウントしてグラフ化し表示するものです。 一応、ちゃんとサーバ上で動作していたものらしい上、ローカルでちゃんと動作したのでスクリプトミスと言うことはないと思います。 考えられるとしたらパーミッションの設定かと思い、700,705,755,777と試したのですが結果は変わりありませんでした。 他に考えられる原因があるとすれば何かありますか? ちなみにローカルで動作させた際のOSはWindowsです。 サーバはUnixですが、動作していたと思われるサーバもUnixでした。 Perlのバージョンは共に5.6です。 よろしくお願いします。

    • 締切済み
    • CGI
  • Windowsサーバ+Perl +アプリ実行は可能?

    Perlでコマンドを実行したいとき、 Linux/Unixサーバのなら system("コマンド名"); と、できるはずですが、 Windowsサーバ+Perlの場合、サーバにインストールされている プログラム/アプリケーションを実行したりすることは可能でしょうか。 具体的なイメージは ユーザーがブラウザからアクセスすると CGIは、サーバ側にインストールされているExcelを起動して マクロを実行、データをCSV形式ファイルに保存。 CGIは保存したCSV形式のファイルを展開し ブラウザ上で表示。 ということは可能ですか? もし可能ならPerlの書式を教えていただければ うれしいですー。

    • ベストアンサー
    • CGI
  • サーバを移行したのですが、プログラムが動きません。

    はじめまして。 Perl超初心者です。 先日、あるサイトのリニューアルをし、PHPでシステムを組んだのですが、一部のコンテンツに関しては、前の業者がPerlで組んでいたシステムをそのまま転用することになりました。 そこで、以前のデータを貰って、サーバのcgi-binのフォルダにそれらのデータをコピーし、関係すると思われるファイルのパーミッションを、755にし、 また、以前は、ファイルの一行目が、#!usr/local/bin/perl だったのですが、 これを、#!usr/bin/perl に修正しましたが、動いてくれません。 Internal Server Error と出てしまいます。 試しに、単純な text.cgi #!/usr/bin/perl print "Content-Type: text/html\n\n"; print "OK"; というファイルを置いてみたのですが、これは動いています。 ちなみに、移行しなければならないcgiファイルは、プログラムの中で、.pl ファイルを複数読み込んでいるのですが、このファイルのパーミッションは、755で良いのでしょうか? また、このプログラムでは、 cgi-bin のディレクトリから、 data というディレクトリの中にある.datファイルを読み込むはずなのですが、このdataというディレクトリは、cgi-binと同階層に置けばよいでしょうか? Internal Server Errorというエラーは、どういうときに出るエラーなのでしょうか? 色々ファイルを操作しても、このエラーしか出ないので、どう対処してよいかよく分かりません。 不勉強で大変心苦しいのですが、 ご回答よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perlでURLから画像ファイルを作成できますか?

    perlである別のサイトの画像をサーバーにコピーする手段はあるのでしょうか? たとえば、yahooのhttp://img.yahoo.co.jp/images/new2.gifをファイルにしたいです。 get_gazou.cgi にそのソースを記述して、アクセスしたら、指定のサーバー内にファイルを作るというものです。 wgetのperl版です。

    • ベストアンサー
    • Perl
  • 自宅サーバがうまくいかない

    困っています。解決方法を教えてください。 環境:windowsXPHomeSp2 CGIの勉強するために、自宅にサーバ機能を入れようと思いました。 それでApacheをインストールし、http://127.0.0.1/が見れることで確認し、 ActivePerlインストールし、プロンプトにて”perl -v”で確認しました。 そのあと、実際にcgiファイルを試しに見てみようと思い、単純なもの(”aaa”とだけ表示するもの)で実行したのですが ”403 Forbidden You don't have permission to access /a.cgi on this server.” と出ます。 それなので、htmlファイルで同じものを作ったのですが見れました。 それでpermissionについて調べてみたのですが、windowsだと特に設定しなくても見ることは出来るとあります。 これはActivePerlの設定が間違ったということでしょうか? それだとどのようにしたら見れるようになるのでしょう。 わかる方がおればお願いします。

    • 締切済み
    • CGI