質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.27%

  • Apache

    1381questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • Raspberry Pi

    500questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • シェル

    215questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

apache2でのシェルスクリプト実行について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 105

sandalwalk

score 31

Raspberry Piにapache2をインストールし、ブラウザーからRaspberry Piにアクセスし、シェルスクリプトを実行したいとのですが、上手く行きません。具体的には、
1,apache2をインストールし、デフォルトの状態で動作しています。ブラウザからHTLMファイル、*.pyファイルへのアクセスは出来ています。
2,実行したいシェルスクリプトは以下の通りです。(sendirは、C言語で書かれたプログラムで、これ単体では問題無く動作します)

#ファイル名:script_test.sh
#!/bin/sh

cd /home/pi/wiringPi/wiringPi
sudo ./sendir air_on.data


python, シェルスクリプトが実行できる様にするため、/etc/apache2/mods-available/mime.conf 中を以下の様に変更

AddHandler cgi-script .cgi .py .sh

その後、上記のスクリプトファイルに対してchmod 755を行い、/usr/lib/cgi-bin中に置き、ブラウザから以下の様にアクセスしていますが、スクリプトは動作しません。

http://192.168.xxx.xxx/cgi-bin/script_test.sh

スクリプト中のsudoがダメなのか?と疑っているのですが、素人なので対策が分かりません。どの様にすれば良いか教えて下さい。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

pythonの中で、

os.system('**スクリプトまでのパス**/script_test.sh')

して、pythonファイルを叩けばいいですね。

あと、使用するコマンドによってはシェルスクリプト内の必要なシェルコマンドをapacheの権限で実行できる用にsudoersを編集するのをお忘れなく。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/12 13:41

    シェルコマンドをapacheの権限で実行出来るようにするためのsudoersの編集方法を教えて頂けますでしょうか。

    キャンセル

  • 2017/12/12 16:23

    このページが付帯情報もあってわかりやすいかな。

    http://www.feijoa.jp/laboratory/programming/phpEnvironment/

    キャンセル

  • 2017/12/12 16:31 編集

    sudo visudo

    で、sudoersを編集するためのエディタが開きます。
    sudoersの実体は/etc/sudoersのはずですが、これをVimとかで直接編集するのは絶対にやめましょう。
    間違えて保存するとrootですら何もできなくなってOS再インストール一直線です。

    まぁ、Raspberry Piはぶっ壊してなんぼなんですけどね。

    キャンセル

  • 2017/12/12 16:32 編集

    devian系ではApacheのデフォルトユーザーとグループはwww-dataのはずなので、sudoersの中に

    www-data ALL=(ALL) NOPASSWD: ALL

    と記述すれば、www-data(Apache)からパスワードなしでsudoでのシェルコマンド実行ができるようになります。最後のALLは全てのコマンドをsudoで実行できるようにするという意味です。

    例えばコマンドをmkdirとchmodだけに限定したいとかいう場合は、

    www-data ALL=(ALL) NOPASSWD: /bin/mkdir, /bin/chmod

    みたいに、コマンドの実体ファイルカンマ区切りで指定すればよかったはずです。

    キャンセル

  • 2017/12/12 16:33

    あとは

    http://kkino.hatenablog.com/entry/2013/05/27/190912

    ここみたいに、複数コマンドのエイリアスを作ってそれを使うのもいいですね。

    キャンセル

  • 2017/12/12 17:22

    ユーザー名がwww-dataとは知らず、この部分にpiと書いていました。シェルスクリプトはお陰様で動きました。ただ、apacheのログにmalformed header from scriptと出ており、ブラウザは500 Internal Errorの状態になってしまいます。上記のシェルスクリプトはHTMLを表示させたりする情報が無いことが原因でしょうか?malformed header from scriptが指している問題が不明です。

    キャンセル

  • 2017/12/12 20:48 編集

    PythonからHTTPヘッダを出力してあげればいいだけのような気がします。

    http://www.futomi.com/lecture/apache/cgierror.html

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.27%

関連した質問

同じタグがついた質問を見る

  • Apache

    1381questions

    Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

  • Raspberry Pi

    500questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • シェル

    215questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。