任意のコマンドをWEBブラウザから実行してみる
概要
寝転びながらサーバの情報を見たいことがあったので、コマンドを実行した結果がWEBブラウザから見れるようにしてみました。技術的には、Nginxでリクエスト時にシェルスクリプトが動作しHTMLで描画するようにしています。Dockerコンテナの上で動いているので移植も起動も簡単です。味気ないですが、好きなコマンドを追加したり、CSSで整えたりはお好みで・・
要件はこんな感じです。
- 必要な時にだけ動作する。とても軽いこと
- 動作中のプロセスのCPU/メモリ使用率が見れること
- WEBブラウザから確認できること
- カスタマイズが容易であること
- Dockerコンテナで動作すること
使い方
- (事前準備) dockerコマンドが使用できるようにしてください
- (事前準備) docker-composeコマンドが使用できるようにしてください
- リポジトリをクローンします。
git clone https://github.com/shun-sa/ps-webapp.git
cd ps-webapp
- 起動します。
docker-compose up -d
- http://<サーバのIP>:8081/top.sh にアクセス
カスタマイズ例
コマンドを追加したい
git clone https://github.com/shun-sa/ps-webapp.git
cd ps-webapp
docker-compose up -d
コマンドを追加したい
top.shに、見たいコマンドをcecho <コマンド>
で書き足していけばOKです。psの場合はcecho ps
ですね。
#!/bin/sh
eval $QUERY_STRING
echo 'Content-type: text/html'
echo ''
echo '<html>'
echo '<head></head>'
echo '<h1>Server Overview</h1>'
cecho(){
echo "<h2>${@}</h2>"
echo "<pre>"
eval $@
echo "</pre>"
}
# ここに足していく
cecho sensors
cecho top -b -n 1 -c | head -n 30
echo '<body>'
GPUの使用率が見たい
コンテナ内でnvidia-smiコマンドが実行できるなら、docker-compose.yml,top.shに以下を追記すれば見れます。
environment:
- NVIDIA_DRIVER_CAPABILITIES=all
- NVIDIA_VISIBLE_DEVICES=all
runtime: nvidia
cecho nvidia-smi
GETメソッドの引数を利用したい
GETメソッドで指定した値がスクリプト内で利用できます。URLにtestkeyを指定しtop.shで見てみるときちんと表示されています。あとはコマンドを渡したり、PIDを渡してプロセスを落としたり等はお好みで・・・
http://<サーバのIP>:8081/top.sh?testkey=val
echo $testkey
⚠️注意
任意のコマンドが実行できる性質上、ホストマシンホストマシンを再起動したり、最悪の場合犯罪の踏み台に利用される可能性があります。インターネットから見れる場所に置くなどはやめましょう。
Author And Source
この問題について(任意のコマンドをWEBブラウザから実行してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/sammrai/items/5f189bccd25b04ada4fc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .