Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2820

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

$
0
0
概要 寝転びながらサーバの情報を見たいことがあったので、コマンドを実行した結果が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 にアクセス カスタマイズ例 コマンドを追加したい 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 GETメソッドの引数を利用したい GETメソッドで指定した値がスクリプト内で利用できます。URLにtestkeyを指定しtop.shで見てみるときちんと表示されています。あとはコマンドを渡したり、PIDを渡してプロセスを落としたり等はお好みで・・・ http://<サーバのIP>:8081/top.sh?testkey=val top.sh echo $testkey ⚠️注意 任意のコマンドが実行できる性質上、ホストマシンホストマシンを再起動したり、最悪の場合犯罪の踏み台に利用される可能性があります。インターネットから見れる場所に置くなどはやめましょう。

Viewing all articles
Browse latest Browse all 2820

Trending Articles