ベストアンサー コマンドラインから、abc.cgi?以下を渡す方法 2001/05/27 04:03 httpサーバーにて、 CGIで、GET方式で値を渡すと、?以降に値がついて渡されますが、 コマンドライン上から、 abc.cgi?以下を渡してみるにはどうしたらよいでしょうか。 みんなの回答 (3) 専門家の回答 質問者が選んだベストアンサー ベストアンサー Head_Syndicate ベストアンサー率64% (73/113) 2001/05/27 13:12 回答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)を入力します。 質問者 お礼 2001/06/03 11:49 windows上とlinux上を行ったり来たりしているので、非常に助かりました。 いろいろ教えてくださって、どうもありがとうございました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (2) akino4 ベストアンサー率18% (35/185) 2001/05/27 15:14 回答No.3 私の場合は、getとpostと引数をパラメータとしてみなすように関数を つかって毎回よびだしてたんんでシームレスにつかえてました。 負荷の上昇はそんなにみられなかったからそれで大丈夫なんでは? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 ka-2 ベストアンサー率37% (22/58) 2001/05/27 06:23 回答No.1 @ARGV($ARGV[0]など) を使うとうまくいくとおもいます。 例: ./aaa.cgi test で、 print "$ARGV[0]"; と実行すると「test」が代入されます。 ちょっと説明が下手ですが試してみてください。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発CGI 関連する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日間悩まされ続けており心底困っております。どうか皆様のお知恵を拝借させてください。 よろしくお願い致します。 コマンドラインでGET or POSTできますか? ふとしたことで、cgiからcgiを呼び出す必要に迫られてしまいました。そこで、呼び出す側はsystem()でやるとして、引数はどのように渡したらいいのでしょうか。 ブラウザでは、メソッド指定で呼び出せますが、コマンドラインでgetまたはpostで渡す方法というのはありますか? /hoge.cgi?name=value というのをPOSTでやりたくて、 $tmp = "name=value"; system("echo $tmp | perl hoge.cgi"); とか試して爆沈しました...(汗 コマンドラインの使い方 コマンドラインで使用するソフトがあります。 毎回コマンドラインに入れる内容が異なります。 素人考えでやっている内容は、 MSDOSのショートカットを作る。 そこにひながたを入れておく。 必要なコマンドラインの内容をエディタで作成して プロパティー>プログラム に貼り付けして実行をしています。 (例) yoi_soft -s 2002/04/01 -e 2002/04/30 もっと便利な方法はないでしょうか。 #私のスキル ・ASPはいじれる。 #この作業を1日、数回から数十回実行する必要があり、形式は同じですが値はいつも変わります。値のルールはありません。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム phpでDSO版とコマンドライン版(CGI)の併用について php3でDSO版とコマンドライン版(CGI)の併用は可能でしょうか? 本やHPで調べてみたら無理そうなのですが、できる方法を知っておられる方 おられましたら、参考サイトでも結構ですので教えていただけないでしょうか。 もしくはphp3をDSO版でphp4をコマンドライン版(CGI)としての併用は可能でしょうか? よろしくお願いします。 外部コマンドで返された値を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を出力してくれません、どうしてでしょうか?お知恵をおかしください。 a.cgi経由で、b.cgi実行 a.cgiからLOCATIONで、b.cgiを実行したいのですが、 1つ条件がありまして、b.cgiを実行する場合は必ず a.cgi経由出なければいけないというチェックをしたいのです。 LOCATIONを使用した場合、環境変数「HTTP_REFERER」に値がセットされないみたいなのでNGでした。 またパラメータを持たせるにしても、LOCATIONはGETしか使えないので、アドレスを見ればばればれになってしまいNGです。 何かいい方法はないでしょうか? よろしくお願いします。 $ENV{'REQUEST_URI'} の値を統一するには 先ほど気がついたのですが $ENV{'REQUEST_URI'} が ローカルと サーバー上で 扱いが違うので 統一したいと思います 設定を変更をするにはどうすればいいのでしょうか? .../abc.cgi?a=1 だとすると ローカルでは ?より前が返ってきます。 .../abc.cgi サーバーでは ?以降もいっしょに返ってきます・・・ .../abc.cgi?a=1 値が違うので。。。 常に?以降を切り取るようにすればいいかもしれないですが...... 簡単に設定で済む方法があればよろしくお願いします 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です。 CGI→CGI変数の引き継ぎはどうするのですか? 初歩的な質問ですがよろしくお願いします。 画面から入力した変数は「GET」などでCGIに値を引き継ぎますが、CGIから別のCGIを起動して最初のCGIでファイルから読み込んだ値や代入された変数を次のCGIに引き継ぐにはどのようにすればよろしいのでしょうか?よろしくお願いします。 コマンドラインでexchange Serverに接続する方法 コマンドラインでexchange Serverに接続する方法 Outlook 2003でExchangeServerに接続しているのですが、コマンドラインでExchangeServerに接続することはできますか? また.NetなどでExchangeServerに接続するライブラリなどはないでしょうか? Windows XPから他のPCに対して以下の事をバッチファイルで行いたい Windows XPから他のPCに対して以下の事をバッチファイルで行いたいのです。 TELNET 192.168.0.2 80 エンター GET /view.html HTTP/1.0 TELNETを使うと手動で GET /view.html HTTP/1.0としなければならないのですが、何か別のコマンドでも構いませんので [何かのアプリ] 192.168.0.2 80 "GET /view.html HTTP/1.0\r\n" で同じ動作するものを探しています。 何かないのでしょうか? コマンドラインによる ntbackup 起動 コマンドラインによる ntbackup 起動結果において、結果セットの名前を自由につけたいのですが、コマンドラインオプションに何を追加して良いかわかりません。 ココで言う”結果セットの名前”とは、ntbackupの復元タグにある名前のことで、デフォルトだと「2007/2/25 12:31 に作成したメディア」のような名前になるものを指します。 ちなみに現在発行しているバックアップ・コマンドは以下です。 ntbackup.exe backup "c:\abc" /F "c:\backup.bkf" /j "test job" /M normal /v:yes /r:yes /d "バックアップ" windows2000 sp4 ntbackup5.0 よろしくお願いいたします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム system関数を使いatコマンドで指定のCGIを実行したい system関数を使いatコマンドで別のCGIを時間指定で動作させたいのですが、 サーバー側でどうしても実行されず困っています。 サーバーに送り込む側のCGIの記述は以下のように記述しています。 =============================================================== #!/usr/bin/perl $command = "at 22:15 09/20/2007 < /var/www/cgi01nni/mailmg/send.csh"; system $command; exit; =============================================================== send.cshは以下のように記述しています。 =============================================================== #/bin/csh perl /var/www/cgi01nni/mailmg/send2.pl > /dev/null; exit 0 =============================================================== root権限にてsshでサーバーにアクセスし、以下のコマンドを入力して 実行した際は、send2.plは正常に動作します。 at 22:15 09/20/2007 < /var/www/cgi01nni/mailmg/send.csh /etc/at.allowはありませんが、 /etc/at.denyはあります。(中身は空) サーバーに送り込む側のCGIを実行した後に、sshでatqで見ると 以下のように確認ができます。 61 2007-09-20 22:15 a apache sshで実行した際は、当たり前ですが以下のように最後がrootになります。 61 2007-09-20 22:15 a root なんとかatを実行させたいのですが、わかる方がおりましたら、 ご教授のほどよろしくお願いいたします。 処理終了後、他のプログラムへPOST方式でsubmitして、移動する方法 処理終了後、他のプログラムへPOST方式でsubmitする方法はないでしょうか。 GET方式を使えば出来ますが、POST方式で値を渡したいのですが、可能でしょうか。 という質問があり、とても参考になりましたが、その後の処理がわかりません。 ユーザーが登録後、自分のサーバで処理終了し、 他のサーバーにある、パスワードとIDをPost方式で受け取るcgiへ引継ぎ、ログイン後の画面へ移行したいです。 そのプログラムは、GETでは、受け取れないようです。 LWPモジュールが使えないため、socketで、サーバ間の通信を考えていますが、どのようにして、ユーザーの接続を他のサーバ側に引き継いでよいのかわかりません。 お力をお貸しください。 よろしくお願いいたします。 コマンドラインの実行について 最近LINUXを始めたものです。よろしくお願いいたします。 フラッシュプレイヤーのLinuxをダウンロードして、インストールしようとしているのですが、Macromediaのページを見ると、 「ファイルを展開すると、"install_flash_player_7_linux" ディレクトリが生成されます。このディレクトリにアクセスし、コマンドラインに「./flashplayer-installer」と入力してインストーラーを実行します。(メモ: この手順はコマンドラインからのみ実行可能です。)インストーラーからすべてのブラウザを閉じるよう指示があるので、この指示に従います。」 と出ていますが、コマンドラインとはどうやって実行するのでしょうか?Fedora Core4で、GUIを使用しています。 http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash テキストにabcを含むファイルを/usr/local/以下で探す テキストにabcを含むファイルを/usr/local/以下で探し、 そのパスを列挙するLinuxコマンドを教えてください。 cgiを使ってサーバ上にファイルを作成する方法 無料のサーバスペースを使用してHPを作っています。 perlを使って自作したcgiをwindowsのコマンドラインで実行すると open(F,">oceco.txt"); print F "oceco\n"; close(F); この記述でファイルが新規作成されるのに、サーバー上のcgiで実行するとファイルが新規作成されません。 しかし、空のoceco.txtをFTPでサーバーに送って属性変更を済ませ、cgiを実行するとoceco.txtの中身が変更されます。 同じサーバでフリーの掲示板cgiを使用していますが、ログファイルを新規作成できています。 そこで質問です。 cgiをつかってサーバ上でファイルを新規作成する方法を教えてください。 コマンドライン引数の例外処理について 整数a、bをコマンドライン引数として受け取るプログラムを作成するとします。この時、入力するコマンドライン引数を整数であるa、b2つのみとします。 次の事柄について教えて下さい。 (1)コマンドライン引数を2個入力しなかった時の例外処理の仕方 (例えば、コマンドライン引数を入力しなかったり3個入力した時) (2)整数のコマンドライン引数を入力しなかった時の例外処理の仕方 (例えば、「abc」などと入力した場合) (3)コマンドライン引数を数の小さいものから入力しなかった時の処理の仕方 (例えば、「3 5」ではなく「5 3」と入力した場合) 初心者なもので…。どなたかお教え下さい。宜しくお願いします。 自宅サーバでのCGI関係エラーについて 現在私は AH HTTPD を使って自宅サーバを運営していますが、ときどきCGI掲示板のみが閲覧できなくなるときが あります。そのような時は必ず以下のようなエラーメッセージが出ます。 Error 500 CGI エラー - 以下のコマンドラインを実行できません : "perl C:\www\public_html\yybbs\yybbs.cgi ", errorcode = 2, No such file or directory この問題はどのように解決したら良いか? どうか教えていただきたいm(_ _)m 1つのsubmitボタンで2つのCGIを呼び出すことは可能ですか? 今は、htmlで <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body> <form action="abc.cgi" method="get"> 以下省略 <input type="submit" value="送信"> </form> <form action="xyz.cgi" method="get"> 以下省略 <input type="submit" value="受信"> </form> </body> </html> という感じで書き、2つのボタンで個々に2つのCGIを呼び出していますが、 これをメールの送受信のように、1つのボタンで2つのCGIを呼び出すことは可能なのでしょうか。 教えてください。お願いいたします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
windows上とlinux上を行ったり来たりしているので、非常に助かりました。 いろいろ教えてくださって、どうもありがとうございました。