답변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에 연결하기 위한 예상 스크립트를 설정했습니다.
즉:
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