Перенаправлення X11: Як поділитися робочим столом на багатьох клієнтів одночасно?


2

Як я можу поділитись переглядом робочого столу (або переглядом з однієї програми) на декілька інших машин (надається кореневий доступ) одночасно? Я бачив подібні запитання (наприклад, тут і тут ), але не впевнений, як зробити це одно-багато одночасно.

Відповіді:


1

Ви можете використовувати VNC, дивіться це питання і відповіді: https://softwarerecs.stackexchange.com/questions/20417/same-content-on-several-different-computers-monitors-administered-remotely/20419#20419 .

Сервер VNC може бути спільним для декількох клієнтів у режимі "лише для читання" (тобто клієнти не можуть керувати сервером за допомогою клавіатури або миші) або "читання-запис" (клієнти можуть взяти під контроль сервер за допомогою клавіатури чи миші, але це може стати складним, коли кілька клієнтів одночасно контролюють запис, оскільки вони можуть заважати один одному).

У останніх дистрибутивах Linux підтримка VNC вбудована в сам сервер X11, але, можливо, його потрібно буде включити (див. Інструкції щодо вашої конкретної дистрибутивної документації). Можна також запустити сервер вручну, повністю незалежно від "основного" сервера X11, що працює на машині. Після запуску вручну сервер VNC може одночасно підтримувати клієнтів як "лише для читання", так і для "читання-запису", використовуючи різні паролі (не впевнений, чи це робить вбудована підтримка сервера X11).

VNC чудово працює над SSH, і клієнтам навіть не потрібні кореневі дозволи для виконання.


0

Мета полягала в тому, щоб розподілити будь-яке зображення / програму, вибрану для ~ 30 робочих столів Linux, незалежно від того, чи входив користувач чи ні, вміст повинен замінювати те, що переглядав користувач (думаю, PSA), а фактичні завдання робочого столу користувачів повинні залишатися непорушеними. Більше того, користувачеві не слід надавати можливість змінювати вміст. Я сподівався на основне рішення, використовуючи трансляції X та TCP. Це не розвивалося, я скоріше використовував VNC, як рекомендували інші.

На стороні клієнта я встановив сценарій очікування для запуску порожнього 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

Згодом стало трохи складніше закрити Xsesions для клієнтів. Тому я використав наступний сценарій очікування, щоб закрити всі Xsesions [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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.