X11 転送: 複数のクライアントで同時にデスクトップを共有するにはどうすればよいでしょうか?

X11 転送: 複数のクライアントで同時にデスクトップを共有するにはどうすればよいでしょうか?

デスクトップビュー(または1つのプログラムからのビュー)を複数の他のマシン(ルートアクセスを付与)に同時に共有するにはどうすればよいですか?同様の質問を見たことがあります(例:ここそしてここ) ですが、1 対多数を同時に行う方法がわかりません。

答え1

VNC を使用することもできます。次の Q&A を参照してください。https://softwarerecs.stackexchange.com/questions/20417/same-content-on-several-different-computers-monitors-administered-remotely/20419#20419

VNC サーバーは、複数のクライアントによって「読み取り専用」モード (つまり、クライアントはキーボードやマウスでサーバーを制御できない) または「読み取り/書き込み」モード (クライアントはキーボードやマウスでサーバーを制御できるが、複数のクライアントが同時に書き込み制御を持つと、互いに干渉し合う可能性があるため、扱いにくくなる可能性がある) で共有できます。

最近の Linux ディストリビューションでは、X11 サーバー自体に VNC サポートが組み込まれていますが、有効にする必要がある場合があります (手順については、特定のディストリビューションのドキュメントを確認してください)。または、マシンで実行されている「メイン」X11 サーバーから完全に独立したサーバーを手動で起動することもできます。手動で起動すると、VNC サーバーは異なるパスワードを使用して「読み取り専用」クライアントと「読み取り/書き込み」クライアントの両方を同時にサポートできます (組み込みの X11 サーバー サポートがそれを実行するかどうかは不明です)。

VNC は SSH 経由で非常にうまく動作し、クライアントは実行にルート権限さえ必要としません。

答え2

目標は、ユーザーがログインしているかどうかに関係なく、選択した画像やプログラムを約 30 台の Linux デスクトップに配布し、コンテンツはユーザーが閲覧しているものよりも優先され (PSA など)、ユーザーの実際のデスクトップ タスクは妨げられないようにすることでした。さらに、ユーザーにコンテンツを変更する権限を与えてはなりません。X と TCP ブロードキャストを使用した基本的なソリューションを期待していました。これは実現せず、代わりに他の人の推奨に従って VNC を使用しました。

クライアント側では、空の Xsession (例X :1) を開始し、その仮想端末に切り替えて (chvt 1必要な場合)、vncserver に接続する expect スクリプトを設定しました。

つまり:

for num in $(seq 0 30); do expect -f xremote$num.exp; done

各 xremote スクリプトはリモート ホストを指定します。

set timeout -1
spawn ssh -o ConnectTimeout=10 root@somehost1
match_max 100000
expect "#"
send "X :1 & \r"
expect "#"
send "export DISPLAY=:1 \r"
expect "#"
send "vncviewer -passwd /root/.vnc/passwd -Shared -ViewOnly -FullScreen 192.168.1.1:1& \r"
expect "#"
send "exit\r"
expect eof
exit 0

そしてサーバーは :1 の後にコンテンツを提供します:

vncserver :1 -geometry 1024x768 -depth 16

その後、クライアントの Xsessions を閉じるのが少し難しくなりました。そこで、次の expect スクリプトを使用して、すべての Xsessions を閉じました [X は :0 で自動的に再起動します] :

set timeout -1
spawn ssh -o ConnectTimeout=10 root@somehost1
match_max 100000
expect "#"
send "pkill X   \r"
expect "#"
send "chvt 1 \r"
expect "#"
send "rm /tmp/.X*lock \r"
send "exit\r"
expect eof
exit 0

関連情報