手順
Linuxサーバーにポートフォワードつきでログインします
$ ssh リモートサーバー -L 8000:localhost:8000
ログインしたら以下のrubyスクリプトを起動します
screen.rb
require 'webrick'
srv = WEBrick::HTTPServer.new(:Port => 8000)
srv.mount_proc '/' do |req, res|
res.content_type = "image/jpeg"
res.body = `export DISPLAY=:0;import -window root jpeg:-`
end
srv.start
bash
$ ruby screen.rb
手元のブラウザで localhost:8000
にアクセスするとサーバー上の画面がブラウザ上から見れます。リロードすれば最新の画面が見れます。
依存モジュール
- imagemagick
- 画面キャプチャをとるのにimagemagickを使っています。
- webrick
- ruby3からは標準モジュールではなくなっているのでない人は入れてください。
ソース解説
- webrickを使ったシンプルなサーバーです。
- エンドポイントは1つだけです。
- リクエストがあると、外部コマンド呼び出しで、画面キャプチャのコマンドを呼び出しています。
- 画面キャプチャのコマンドが
export DISPLAY=:0;import -window root jpeg:-
となっています- DISPLAY環境変数をセット(私の環境では:0に設定しています)
- importコマンドでキャプチャをとる
- ウィンドウはすべて(rootを対象に)
- jpeg形式で標準出力に(jpeg:-)