1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

任意のコマンドをWEBブラウザから実行してみる

Posted at

概要

寝転びながらサーバの情報を見たいことがあったので、コマンドを実行した結果がWEBブラウザから見れるようにしてみました。技術的には、Nginxでリクエスト時にシェルスクリプトが動作しHTMLで描画するようにしています。Dockerコンテナの上で動いているので移植も起動も簡単です。味気ないですが、好きなコマンドを追加したり、CSSで整えたりはお好みで・・

Screen Shot 2021-04-24 at 14.52.55.png

要件はこんな感じです。

  • 必要な時にだけ動作する。とても軽いこと
  • 動作中のプロセスの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 にアクセス

カスタマイズ例

コマンドを追加したい

top.shに、見たいコマンドをcecho <コマンド>で書き足していけばOKです。psの場合はcecho psですね。

top.sh
#!/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に以下を追記すれば見れます。

docker-compose.yml
    environment:
      - NVIDIA_DRIVER_CAPABILITIES=all
      - NVIDIA_VISIBLE_DEVICES=all
    runtime: nvidia
top.sh
cecho nvidia-smi

Screen Shot 2021-04-24 at 15.18.16.png

GETメソッドの引数を利用したい

GETメソッドで指定した値がスクリプト内で利用できます。URLにtestkeyを指定しtop.shで見てみるときちんと表示されています。あとはコマンドを渡したり、PIDを渡してプロセスを落としたり等はお好みで・・・

http://<サーバのIP>:8081/top.sh?testkey=val

top.sh
echo $testkey

Screen Shot 2021-04-24 at 15.22.49.png

⚠️注意

任意のコマンドが実行できる性質上、ホストマシンホストマシンを再起動したり、最悪の場合犯罪の踏み台に利用される可能性があります。インターネットから見れる場所に置くなどはやめましょう。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?