LoginSignup
0
0

More than 1 year has passed since last update.

VNCを使わずにサーバー上の画面をリアルタイムにみる

Posted at

手順

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:-)
0
0
0

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
0
0