X11轉發:如何在多個客戶端同時共用桌面?

X11轉發:如何在多個客戶端同時共用桌面?

如何同時將桌面檢視(或一個程式的檢視)共用給多台其他電腦(具有 root 存取權限)?我見過類似的問題(例如,這裡這裡),但我不確定如何同時完成一對多。

答案1

您可以使用 VNC,請參閱此問答: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 運作得非常好,客戶端甚至不需要 root 權限即可執行。

答案2

目標是將所選的任何圖像/程式分發到約 30 個 Linux 桌面,無論用戶是否登錄,內容應取代用戶正在查看的內容(想想 PSA),並且用戶的實際桌面任務應保持不受干擾。此外,不應賦予用戶更改內容的能力。我曾希望有一個使用 X 和 TCP 廣播的基本解決方案。但這並沒有發展,而是我按照其他人的推薦使用了 VNC。

在客戶端,我設定了一個expect腳本來啟動一個空白的Xsession(例如X :1),切換到該虛擬終端(即,chvt 1必要時),並連接到vncserver。

即:

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

之後,關閉客戶端上的 Xsession 變得有點棘手。因此,我使用以下期望腳本來關閉所有 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

相關內容