2

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

2 ответа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, и клиентам даже не требуются права доступа root для выполнения.

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

После этого стало немного сложно закрыть Xsessions на клиентах. Поэтому я использовал следующий ожидаемый скрипт, чтобы закрыть все 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .