• ベストアンサー

コマンドラインから、abc.cgi?以下を渡す方法

httpサーバーにて、 CGIで、GET方式で値を渡すと、?以降に値がついて渡されますが、 コマンドライン上から、 abc.cgi?以下を渡してみるにはどうしたらよいでしょうか。

  • defd
  • お礼率19% (11/56)
  • CGI
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
回答No.2

GETで受け取るCGIスクリプトをコマンドラインで確認したいん ですね。パラメータは環境変数QUERY_STRINGで渡されますから、 UNIXのcshだったら % setenv QUERY_STRING param=123&id=abc % abc.cgi sh, bashあるいはWindowsでもcygwinだったら) $ QUERY_STRING='param=123&id=abc'; export QUERY_STRING $ abc.cgi もしくは % env QUERY_STRING='param=123&id=abc' abc.cgi などで渡すことができるでしょう。DOSの世界ならちょっと むずかしいので、abc.cgiの冒頭に、 unless ($ENV{REQUEST_METHOD}) { $ENV{REQUEST_METHOD}='GET'; $ENV{QUERY_STRING}=shift; } などと書いておき、 C:\> perl abc.cgi param=123&id=abc と引き数に指定してやればQUERY_STRINGとして渡されます。 なお、CGI.pmを使っているならCGIモジュールをuseしてる箇所を use CGI qw(-debug); にし、 C:\> perl abc.cgi と実行すると、プロンプトからパラメータを読み込むオフラインモードに なりますから、そこでパラメータを指定することができます。 (offline mode: enter ....) param=123 id=abc このようにパラメータごとに改行してもかまいません。パラメータ 入力を終えるにはCntrlキー+D(DOSならCtrl+Z)を入力します。

defd
質問者

お礼

windows上とlinux上を行ったり来たりしているので、非常に助かりました。 いろいろ教えてくださって、どうもありがとうございました。

その他の回答 (2)

  • akino4
  • ベストアンサー率18% (35/185)
回答No.3

私の場合は、getとpostと引数をパラメータとしてみなすように関数を つかって毎回よびだしてたんんでシームレスにつかえてました。 負荷の上昇はそんなにみられなかったからそれで大丈夫なんでは?

  • ka-2
  • ベストアンサー率37% (22/58)
回答No.1

@ARGV($ARGV[0]など) を使うとうまくいくとおもいます。 例: ./aaa.cgi test で、 print "$ARGV[0]"; と実行すると「test」が代入されます。 ちょっと説明が下手ですが試してみてください。

関連するQ&A

  • コマンドラインで実行できるのに CGI から実行すると挙動がおかしい

    perl から dot (ネットワーク図を作成する Graphviz というツールに含まれているソフトウェア)を呼び出して jpg ファイルを作成する以下のスクリプトを書きました。 #!/usr/bin/perl $th = "test"; qx(/usr/local/bin/dot -Nfontname=HiraMinPro-W3 -Tjpg "${th}.dot" > "${th}.jpg"); このスクリプトはコマンドラインから実行したときには正常に動いて test.jpg ファイルが生成されるのですが、PHP で書いた CGI から system コマンドを用いて呼び出すと 0 バイトの test.jpg ファイルができてしまいます。 また、一度 test.jpg ファイルが生成されると、それ以降 CGI を何度実行しても新しく test.jpg ファイルが作られません(作成時刻が変わりません)。 ウェブサーバーは Apache、OS は Mac OSX (Tiger) です。 このバグに10日間悩まされ続けており心底困っております。どうか皆様のお知恵を拝借させてください。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • コマンドラインでGET or POSTできますか?

    ふとしたことで、cgiからcgiを呼び出す必要に迫られてしまいました。そこで、呼び出す側はsystem()でやるとして、引数はどのように渡したらいいのでしょうか。 ブラウザでは、メソッド指定で呼び出せますが、コマンドラインでgetまたはpostで渡す方法というのはありますか? /hoge.cgi?name=value というのをPOSTでやりたくて、 $tmp = "name=value"; system("echo $tmp | perl hoge.cgi"); とか試して爆沈しました...(汗

    • ベストアンサー
    • Perl
  • コマンドラインの使い方

    コマンドラインで使用するソフトがあります。 毎回コマンドラインに入れる内容が異なります。 素人考えでやっている内容は、 MSDOSのショートカットを作る。 そこにひながたを入れておく。 必要なコマンドラインの内容をエディタで作成して プロパティー>プログラム に貼り付けして実行をしています。 (例) yoi_soft -s 2002/04/01 -e 2002/04/30 もっと便利な方法はないでしょうか。 #私のスキル ・ASPはいじれる。 #この作業を1日、数回から数十回実行する必要があり、形式は同じですが値はいつも変わります。値のルールはありません。

  • phpでDSO版とコマンドライン版(CGI)の併用について

    php3でDSO版とコマンドライン版(CGI)の併用は可能でしょうか? 本やHPで調べてみたら無理そうなのですが、できる方法を知っておられる方 おられましたら、参考サイトでも結構ですので教えていただけないでしょうか。 もしくはphp3をDSO版でphp4をコマンドライン版(CGI)としての併用は可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 外部コマンドで返された値をCGIで取り込むには?

    外部コマンドで返された値をCGIで取り込むには? 環境:Activeperl 5.8.9/IIS6/Windows2003Server [hello.cgi] ==================================== #! /Perl/bin/perl #HTMLヘッダーを出力します print "Content-type: text/html\n\n"; print "エコーのテスト<BR>"; my $msg=`echo hello`; print "エコーは".$msg."です"; exit; ==================================== 上記cgiを、Windowsのコマンドプロンプト上で「c:\perl>hello.cgi」とすると、ちゃんとDOS窓上で動きますが。同ファイルに 対して、http://www.test.com/scripts/hello.cgi とすると、ブラウザ上にて、 ============= エコーのテスト エコーはです ============= のような感じになって、$msgを出力してくれません、どうしてでしょうか?お知恵をおかしください。

    • ベストアンサー
    • Perl
  • a.cgi経由で、b.cgi実行

    a.cgiからLOCATIONで、b.cgiを実行したいのですが、 1つ条件がありまして、b.cgiを実行する場合は必ず a.cgi経由出なければいけないというチェックをしたいのです。 LOCATIONを使用した場合、環境変数「HTTP_REFERER」に値がセットされないみたいなのでNGでした。 またパラメータを持たせるにしても、LOCATIONはGETしか使えないので、アドレスを見ればばればれになってしまいNGです。 何かいい方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • $ENV{'REQUEST_URI'} の値を統一するには

    先ほど気がついたのですが $ENV{'REQUEST_URI'} が ローカルと サーバー上で 扱いが違うので 統一したいと思います 設定を変更をするにはどうすればいいのでしょうか? .../abc.cgi?a=1 だとすると ローカルでは ?より前が返ってきます。  .../abc.cgi サーバーでは ?以降もいっしょに返ってきます・・・  .../abc.cgi?a=1 値が違うので。。。 常に?以降を切り取るようにすればいいかもしれないですが...... 簡単に設定で済む方法があればよろしくお願いします

    • ベストアンサー
    • Perl
  • ptkdbを使ってCGIプログラムをデバッグしたい

    #!/usr/bin/perl -d:ptkdb use CGI; print(CGI->new->header, "abc"); 原因を解明するために超簡易スクリプトを作成しました。 このスクリプトはブラウザーにabcと表示するはずです。 しかし Internal Server Error となってしまいます。 このスクリプトから -d:ptkdb の部分を取り除くと、ちゃんとabcと表示されるのです。 また、コマンド行では-dオプションの有無に関係なくちゃんとabcと表示されます。。。 誰か教えてくださいm(__)m サーバー機はRedHatLinux7.2です。

    • ベストアンサー
    • Perl
  • CGI→CGI変数の引き継ぎはどうするのですか?

    初歩的な質問ですがよろしくお願いします。 画面から入力した変数は「GET」などでCGIに値を引き継ぎますが、CGIから別のCGIを起動して最初のCGIでファイルから読み込んだ値や代入された変数を次のCGIに引き継ぐにはどのようにすればよろしいのでしょうか?よろしくお願いします。

    • ベストアンサー
    • CGI
  • コマンドラインでexchange Serverに接続する方法

    コマンドラインでexchange Serverに接続する方法 Outlook 2003でExchangeServerに接続しているのですが、コマンドラインでExchangeServerに接続することはできますか? また.NetなどでExchangeServerに接続するライブラリなどはないでしょうか?