ブラウザからラズパイの電源を切る

ラズパイの電源を切るにあたって、物理的なスイッチならばネットに色々と情報があるけど、音源ボードつけると実現できない。通常はパソコンからSSHでログインしてシャットダウンコマンドだがメンドイ。せめてスマフォから簡単に電源を切れるようにしたい。ブラウザからボタン押して切れるのが理想だけど、そのためにApatchを動かすのも重い。pythonで簡易Webサーバーを考えたけどcgiが上手く動かない。。

 

しょうがない。腹をくくってnetcat

nc -l -p 10025 -e /bin/sh 

他の端末からポート10025にアクセスすることで、入出力が/bin/shにリダイレクトされるようになる。すなわちバックドア

 

-eオプションはパッケージ版だと無効なのでソースからインストール。

さすがにバックドアは困るので下記のようなスクリプトをつくって

---------

#!/bin/bash

while :
 do
   read key
   case "$key" in
     *shutdown* ) sudo su -l root -c 'shutdown -h now' ;;
     *ls* ) ls -ls ;;
     *reboot* ) sudo su -l root -c 'shutdown -r now' ;;
     "q" ) echo "quit"
          break ;;
      * ) echo $key  ;;
   esac
 done

---------

ブラウザからhttp://x.x.x.x:10025/shutdown

とアクセスしてシャットダウンできるようにする。自動起動のために/etc/rc.localから呼び出すけど、root権限はパスなのでユーザー権限で動かす。ユーザー認証の仕組みは無いです。。

 

もっとスキルがあればもっとCoolで簡単な方法で実現できると思うけど、私のスキルではこれが精一杯。このレベルの情報が参考になる人がどれだけいるかも分かりませんが、色んなサイトを調べつつpython断念から含めたらほぼ半日以上を費やしたので、ここに書いておきます。

 

実際にちゃんと動作するけど一瞬だけブラウザにioctlのエラーがでる。。shutdownのコマンドを投げる場所がttyじゃないからだと思う。詳しい方がいたら教えてください。

 

どうやらこの内容みたいだね。

 




コメント
コメントする








   
この記事のトラックバックURL
トラックバック

categories

links

recent comment

profile

search this site.

others

mobile

qrcode

powered

みんなのブログポータル JUGEM