CGI-BBS > CGI > Perl > AサーバーのCGIからBサーバーのCGIを実行して結果を取得したい。


カレッヂ
カレッヂ


質問者 ヒロ  投稿日 5/16(金) 17:54:56
以下の様な事をしたいのですが…

Aサーバー ACGI
Bサーバー BCGI

AサーバーのACGIからBサーバーのBCGIに引数を渡して、
BCGIの実行結果をACGIに戻す方法を知りたいのです。
(具体的には、Aサーバーで入力されたIDをBサーバーで
 管理しているデータベースでユーザー情報で照合し
 結果をAサーバーに返すもの)

ですが、具体的にどのようにすれば良いのか判りません。

過去ログを調べて socketを使うのかな?と思うのですが、
socketについての詳しく書かれたサイトなども見つけられずに
困っております。

ご教授宜しくお願いします。

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:UNIX
エディタ:
FTPソフト:
サーバ移転:していない
改造:(未選択)
CGI習熟度:expert

回答者 まさ  [削除]  投稿日 5/17(土) 11:02:26
LWPモジュールを使うとできます。
検索エンジンで使い方を見て下さい。

あるいはおっしゃっているようにsocketを使うこともできます。

呼び出し側
-------------------------------------------------------------------
use strict;
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;

my $lwp = LWP::UserAgent->new;
my $req = POST 'http://www.foo.ne.jp/bar.pl', [ name => 'test' ];
print $req->as_string, '-' x 40, "\n",
      $lwp->request($req)->content();
-------------------------------------------------------------------

呼び出される側(bar.pl)
-------------------------------------------------------------------
#!/usr/local/bin/perl -w

use strict;
use CGI;

my $q = new CGI;
my $data = $q->param('name') . ':' . $q->request_method();

print<<__HTML__;
Content-Type: text/html

<HTML><BODY>
$data
</BODY></HTML>
__HTML__
-------------------------------------------------------------------

これを実行してみて下さい。


質問者 ヒロ  [削除]  投稿日 5/20(火) 13:41:51
まささんご返信有難う御座います。
早速実行してみましたところ、

呼び出し側の・・・

use HTTP::Request::Common qw(POST);

の部分でエラーが出てしまっております。
LWPモジュールってインストールする必要があるのですよね?
実はサーバーを遠隔操作しておりまして、root権限が無い為
組込みが出来ないのです…。LWP便利そうなんですけど…。

お手数お掛けして、申し訳ないのですが、
socketを用いた場合の方法をご教授願えませんでしょうか?
何卒宜しくお願いします。

m(_ _)m
回答者 やまだ  [削除]  投稿日 5/21(水) 01:43:34
HTTP::Request::CommonはLWPモジュールとは別ものですね。
それから、上のモジュールはroot権限がなくとも組込むことは可能(perl Makefile.PL PREFIX=/home/yamadaとかして、Makefileを作った後、
Makefileのmanpathあたりを変更。)だし、use libあたりで、モジュールの検索パス
をいじれば、使用可能かと思いますが。

socketに関しては、C言語と、ほぼ同じく使えたかと思います。参考資料としては、オライリーのラクダ本あたりでしょうか。

返信(回答)する

 


Web裏技