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://rolle.cybton.com/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