VNC-Server per Initscript starten
Nachfolgende Scripte von oc2pus (von mir leicht überarbeitet) (vielen Dank an denselben) ermöglichen es, einen VNC-Server für den Benutzer root automatisch in die Runlevel einzutragen. Leider geht es nicht so einfach per Copy & Paste, da dann wohl die Formatierung flöten geht. Damit nicht alle das Script einzeln abtippen müssen, habe ich das jetzt einmal gemacht und stelle es zum Download bereit unter http://rolandholder.funpic.de/scripte/vncserver.bz2 In der momentanen Ausführung startet das Script einen VNC-Server für root auf Display 1 mit dem XFCE. Das Script kann natürlich auch relativ einfach für andere Nutzerinnen oder andere Displays und Windowmanager umgeschrieben werden. Erfolgreich getestet habe ich es auf OpenSuSE 10.
- Schreibe ein Startscript /etc/init.d/vncserver - ungefähr so:
#! /bin/sh # # Author: Toni # # /etc/init.d/vncserver this Script # /usr/sbin/rcvncserver Root-Link to this Script # /usr/X11R6/bin/vncserver Program # ### BEGIN INIT INFO # Provides: vncserver # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: Start vncserver for remote control # ### END INIT INFO #test -r /etc/rc.config && . /etc/rc.config export PATH=$PATH:/usr/X11R6/bin:/opt/kde3/bin # Check for missing binaries FOO_BIN=/usr/X11R6/bin/vncserver test -x $FOO_BIN || exit 5 # Set HOME of Root-User HOME="/root" export HOME USER="root" export USER # Set ID for Connections (Displaynumber) FOO_ID=1 # First reset status of this service . /etc/rc.status rc_reset # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error # 2 - invalid or excess argument(s) # 3 - unimplemented feature (e.g. "reload") # 4 - insufficient privilege # 5 - program is not installed # 6 - program is not configured # 7 - program is not running # case "$1" in start) echo -n "Starting vnc-Server with Terminal-ID $FOO_ID " # Delete old PIDs rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.pid 2> /dev/null rm -f /tmp/.X11-unix/X$FOO_ID 2> /dev/null if [ -e $HOME/.vnc/$HOSTNAME:$FOO_ID.log ]; then cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1 rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log fi # $FOO_BIN -depth 16 -name kde :$FOO_ID 2>&1 $FOO_BIN -depth 16 -name xfce :$FOO_ID 2>&1 rc_status -v6 ;; stop) echo -n "Shutting down vnc-Server " $FOO_BIN -kill :$FOO_ID 2>&1 cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1 rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log rc_status -v2 ;; restart) $0 stop $0 start rc_status ;; status) echo -n "Checking for service vnc-Server on Terminal-ID $FOO_ID: " ## Check status with checkproc(Cool, if process is running ## checkproc will return with exit status 0. # Return value is slightly different for the status command: # 0 - service running # 1 - service dead, but /var/run/ pid file exists # 2 - service dead, but /var/lock/ lock file exists # 3 - service not running # NOTE: checkproc returns LSB compliant status values. checkproc $FOO_BIN rc_status -v ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 ;; esac rc_exit
Im Verzeichnis /usr/sbin solltest du noch einen link auf dieses script anlegen:
- cd /usr/sbin
- ln -s /etc/init.d/vncserver rcvncserver
Damit kannst Du mit 'rcvncserver start' den Server starten mit 'rcvncserver stop' den VNC-Server stoppen
- Aktiviere dieses script via yast Runleveleditor für die runlevel 3 5
oder mit dem Befehl insserv vncserver
- Im Verzeichnis '/root/.vnc' musst du die xstartup Datei anpassen:
#!/bin/sh export LANG="de_DE" case "$VNCDESKTOP" in kde) startkde & ;; xfce) startxfce4 & ;; *) xrdb $HOME/.Xresources xsetroot -solid grey xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm & ;; esac
Je nachdem ob du KDE oder xfce als Windowmanager einsetzen willst. Analog können auch andere Windowmanager eingetragen werden.
- Jetzt solltest du mit dem vncviewer mit dem Befehl 'vncviewer <servername>:1' zum Server verbinden können.
Rolle