shell2httpをsnapで入れると動かず、Flask-Shell2HTTPはファイルを直接弄らないといけないのでPythonで作ってみました。
インストール
pip install shell2http
使い方
http://localhost:8080/ をブラウザで開くことでコマンドが実行されます。8080は変更可能です。
shell2http [options] ["shell command" for /] /path "shell command" /path2 "shell command2" ...
options:
-p, --port NNNN : port for http server ( default 8080 )
例
Windows
curl localhost:8080
するとシャットダウンできます。 http://localhost:8080/ を開いてもシャットダウンできます。
shell2http 'shutdown -s -t 0'
curl localhost:8080/beep
でビープ音が鳴ります。
shell2http 'shutdown -s -t 0' /beep 'echo ^G'
http://localhost:3306/beep を開くとビープ音が鳴ります。
shell2http --port 3306 /beep 'echo ^G'
Linux
curl localhost:8080
すると通知が届きます。 http://localhost:8080/ を開いても通知が届きます。
shell2http 'notify-send Hello root'
curl localhost:3000/path
でサウンドが再生されます。
shell2http -p3000 'notify-send Hello root' /path 'canberra-gtk-play -i desktop-login'
shell2http -p3000 /path 'canberra-gtk-play -i desktop-login'
例えば、ポートフォワーディング(UPnP)してプロセスがやられたら、外からデスクトップに音を鳴らしたり通知できます。リクエストのパラメータを使用しないのでosコマンドインジェクションも問題ないと思います。
本家のshell2httpよりも5倍高速で100ms以内に実行できます。
謝辞