BLOGTIMES
2010/11/02

shスクリプトをCGIとして呼び出せるようにする

  sh 
このエントリーをはてなブックマークに追加

ちょっとした運用向けのshスクリプトをCGIとしてHTTP経由で起動できるようにすると便利なことがあります。
しかしながら、単純に下記のように .htaccess などで.shをCGIとして実行できるように設定しただけでは Internal Server Error になってしまいます。

Options +ExecCGI AddHandler cgi-script .cgi .sh

そこで、下記のようにHTTPヘッダを吐くようにすると、CGIとして正常実行できるようになります。
また、環境変数を上手く使うことで、Apache以外から起動されたときには普通のshスクリプトとすることができます。

#!/bin/bash if [ -n "$HTTP_HOST" ] ; then echo -e "Content-Type: text/html; charset=UTF-8\r\nPragma: no-cache\r\nCache-Control: no-cache, must-revalidate\r\nExpires: Thu, 01 Dec 1994 16:00:00 GMT\r\n\r\n" fi # ここに処理を書く

上記の環境変数の応用で引数を取るようにすることもできますが、セキュリティ的な問題を引き起こしやすいので、あくまで誰が起動しても問題がない機能を簡易的に実装することに留めるべきかなと思います。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3889
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン