VNC-Server per Initscript starten: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
Zeile 138: Zeile 138:
  
 
Rolle
 
Rolle
 +
 +
[[Category:grafische Fernsteuerungen]]

Version vom 25. August 2006, 21:08 Uhr

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