Der Trick an der Sache ist es zwei X-Server aufzusetzen. Einen ``Master''-Server auf dem gearbeitet werden darf und einen ``Slave''-Server der nur einen Viewer auf den ``Master''-Server enthält. Dieser Viewer ist auf Viewonly gestellt.
Mit diesem Start-Skript werden die Server gestartet.
1: #!/bin/sh 2: # Startet zwei VNC-Server (Master und Slave) 3: 4: # Auflösung festlegen 5: GEOM=950x680 6: CDEPTH=16 7: 8: # Variable auswerten 9: case $1 in 10: start) 11: # Starten der VNC-Server 12: # Master starten 13: # Passworddatei ~/.vnc/privat 14: vncserver :1 \ 15: -geometry $GEOM \ 16: -depth $CDEPTH \ 17: -alwaysshared \ 18: -name master \ 19: -rfbauth $HOME/.vnc/privat 20: 21: # Slave starten 22: # Passworddatei ~/.vnc/public 23: vncserver :2 \ 24: -geometry $GEOM \ 25: -depth $CDEPTH \ 26: -alwaysshared \ 27: -name slave \ 28: -rfbauth $HOME/.vnc/public 29: 30: # Viewer zur Kontrolle des Master-Servers starten 31: # Falls in einem X-Terminal als anderer Benutzer gestartet zeigt 32: # die Display-Variable auf das aktuelle X-Window 33: # Der Server muß aber vorher mit 34: # xhost localhost 35: # freigegeben werden 36: DISPLAY=:0.0 37: export DISPLAY 38: # Viewer starten 39: vncviewer :1 40: ;; 41: 42: stop) 43: # Beenden des VNC-Servers 44: vncserver -kill :1 45: vncserver -kill :2 46: ;; 47: *) # Falsches Kommando 48: echo "Syntax: vnc start|stop" 49: ;; 50: esac 51: 52: # Ende
Mit dem Parameter start werden die zwei Server und der Master-Viewer gestartet.
ole@enterprise:~> vnc start New 'master' desktop is enterprise:1 Starting applications specified in /home/ole/.vnc/xstartup Log file is /home/ole/.vnc/enterprise:1.log New 'slave' desktop is enterprise:2 Starting applications specified in /home/ole/.vnc/xstartup Log file is /home/ole/.vnc/enterprise:2.log VNC server supports protocol version 3.3 (viewer 3.3) Password: VNC authentication succeeded Desktop name "ole's master desktop (enterprise:1)" Connected to VNC server, using protocol version 3.3
Der Parameter stop sorgt dafür, daß die beiden Server beendet werden.
ole@enterprise:~> vnc stop Killing Xvnc process ID 1994 Killing Xvnc process ID 2014
Vorm Einsatz des Skripts müssen mit
ole@enterprise:~> vncpasswd ~/.vnc/privat Password: Verify: ole@enterprise:~> vncpasswd ~/.vnc/public Password: Verify:zwei Passwortdateien angelegt werden. Die Kursteilnehmer erhalten natürlich nur das Passwort aus der Datei public.
Damit die Server unterschiedlich in ihrer Ausführung sind, muß die Datei xstartup die Server unterscheiden.
1: #!/bin/sh 2: 3: # Start ist abhängig vom Servernamen 4: case $VNCDESKTOP in 5: slave) 6: # Slave-Server nur mit Viewer 7: echo "Slave Modus: $VNCDESKTOP" 8: vncviewer -viewonly -share -fullscreen \ 9: -passwd $HOME/.vnc/privat :1 10: ;; 11: 12: master) 13: # Master-Server mit KDE 14: echo "Master Modus: $VNCDESKTOP" 15: xrdb $HOME/.Xresources 16: xsetroot -solid grey 17: #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & 18: kde & 19: ;; 20: *) 21: # Normaler Server zum Arbeiten 22: echo "Normaler Server" 23: xrdb $HOME/.Xresources 24: xsetroot -solid grey 25: xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & 26: twm & 27: ;; 28: esac