[Howto] VNC-Server per initscript starten

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
rolle
Guru
Guru
Beiträge: 3721
Registriert: 4. Mai 2004, 21:50
Kontaktdaten:

[Howto] VNC-Server per initscript starten

Beitrag von rolle » 23. Okt 2005, 17:10

Liebe Leute!

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.

1.)Schreibe ein Startscript /etc/init.d/vncserver - ungefähr so:

Code: Alles auswählen

#! /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

# 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:

Code: Alles auswählen

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

2.) Aktiviere dieses script via yast Runleveleditor für die runlevel 3 5
oder mit dem Befehl insserv vncserver

3.) Im Verzeichnis '/root/.vnc' musst du die xstartup Datei anpassen:

Code: Alles auswählen

#!/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.

4.) Jetzt solltest du mit dem vncviewer mit dem Befehl
vncviewer <servername>:1 zum Server verbinden können.
Horrido, Roland

Für meine Postings gilt außer bei Zitaten hier im Linux-Club die Creative Commons.

Werbung:
rolle
Guru
Guru
Beiträge: 3721
Registriert: 4. Mai 2004, 21:50
Kontaktdaten:

Beitrag von rolle » 27. Nov 2005, 22:31

Nachtrag:
In dem Initscript muß nach 'export HOME' noch folgendes eingefügt werden.

Code: Alles auswählen

USER = "root"
export USER
Horrido, Roland

Für meine Postings gilt außer bei Zitaten hier im Linux-Club die Creative Commons.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast