• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

vnc / inetd -- permanente Session ??

Status
Für weitere Antworten geschlossen.

Dino

Newbie
Hallo ich versuche den Vnc-Support, der ab 8.2 enthalten ist so zu konfigurieren, dass die Vnc-Session erhaltenbleibt wenn die Verbindung zum viewer getrennt wird.

Lt XVNC Manual wäre der inetd.conf Eintrag :

In the wait mode, when the first connection comes in, inetd gives the listening socket to Xvnc. This means that for a given TCP port, there is only ever one Xvnc at a time. Further viewer connections to the same port are accepted by the same Xvnc in the normal way. Even when the original connection is broken, the Xvnc will continue to run. If this is used with the XDMCP options -query and -once, the Xvnc and associated X clients will die when the user logs out of the X session in the normal way. It is important to use a VNC password in this case. A typical entry in inetd.conf might be:

5951 stream tcp wait james /usr/local/bin/Xvnc Xvnc -inetd -query localhost -once passwordFile=/home/james/.vnc/passwd

In fact typically, you would have one entry for each user who uses VNC regularly, each of whom has their own dedicated TCP port which they use. In this example, when user "james" connects to :51, he enters his VNC password, then gets the XDM login screen where he logs in in the normal way. However, unlike the previous example, if he disconnects, the session remains persistent, and when he reconnects he will get the same session back again. When he logs out of the X session, the Xvnc will die, but of course a new one will be created automatically the next time he connects.

Ich habe in der xinetd.d/vnc folgendes eingetragen:

service vnc12
{
socket_type = stream
protocol = tcp
wait = yes
user = dino
server = /usr/X11R6/bin/Xvnc
server_args = :42 -inetd - query localhost -once passwordFile=/home/dino/.vnc/passwd
type = UNLISTED
port = 5912
}

Wenn ich wait = yes auf wait = no stelle bekomme ich einen Connect, aber die Session ist dann wieder tot wenn der Viewer disconnecet. Mit wait = yes beomme ich keinen connect. Der Viewer schliesst sich ohne Kommentar.

Jede Idee ist willkommen .. Danke im Voraus =)

Gruß

-- Dino
 

basman

Member
Ich starte den vnc server immer von Hand. So läuft er von vornherein bereits ohne verbundenen Client und ich kann mit Clients so oft kommen und gehen wie ich will.
Code:
vncserver
Will man das ganze schon beim Booten automatisch haben, erstellt man ein Bootscript in /etc/init.d nach dem Vorbild von /etc/init.d/skeleton und aktiviert es per chkconfig oder im Runlevel-Editor von Yast.

Das über den Inetd zu machen scheint mir unnötig.

Gruss basman
 
OP
D

Dino

Newbie
Hmm und dann bekommt man ne Anmeldemaske beim VNC ?
Und wenn man mehrere Sessions benötigt einfach vncserver :1, vncserver :2 starten ?

Da ich jetzt in der Arbeit bin kann ich es nicht ausprobieren, aber vncserver startet doch aus dem Userhome .vnc/startupx wenn ich das beim Booten mache gibts noch kein Userhome (evt n00b Frage *fg*)

Anyway Danke für die Antwort, ich werde es mal ausprobieren

Gruß
-- Dino
 

basman

Member
Dino schrieb:
Hmm und dann bekommt man ne Anmeldemaske beim VNC ?
Nein. Du musst dann beim VNCviewer (Client-Seite) angeben, welchen server und welches display Du erreichen willst.
Dino schrieb:
Und wenn man mehrere Sessions benötigt einfach vncserver :1, vncserver :2 starten ?
Einfach ohne argument starten. Er nummeriert dann automatisch hoch.

Dino schrieb:
vncserver startet doch aus dem Userhome .vnc/startupx wenn ich das beim Booten mache gibts noch kein Userhome (evt n00b Frage *fg*)
Gute Frage! Also im Startscript nicht nur einfach "vncserver" starten, sondern
Code:
su - vncuser -c vncserver
Für vncuser setzt Du einen User ein, unter dessen Account vncserver laufen soll und wo er die config files findet.

Gruss basman
 

basman

Member
Installation

Das script als root unter /etc/init.d/vnc speichern und per
Code:
chmod 755 /etc/init.c/vnc
ausführbar machen.

Die Zeile VNCUSER= anpassen!

Zum Testen: /etc/init.d/vnc start
Für die permanente Aktivierung: chkconfig vnc on

Script /etc/init.d/vnc
Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          vnc
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: vncserver
# Description:       Start vncserver providing remote vnc sessions
### END INIT INFO

# Check for missing binaries (stale symlinks should not happen)
VNCSERVER_BIN=/usr/X11R6/bin/vncserver
test -x $VNCSERVER_BIN || { echo "$VNCSERVER_BIN not installed"; exit 5; }

# vncserver runs as this user
VNCUSER=herbert

. /etc/rc.status

# Reset status of this service
rc_reset

case "$1" in
    start)
        echo -n "Starting vncserver "
        #startproc -u $VNCUSER $VNCSERVER_BIN
        su - $VNCUSER -c "$VNCSERVER_BIN :1"
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down vncserver "
        #killproc -TERM $VNCSERVER_BIN
        su - $VNCUSER -c "$VNCSERVER_BIN -kill :1"
        rc_status -v
        ;;
    restart)
        $0 stop
        $0 start
        rc_status
        ;;
    status)
        echo -n "Checking for service vncserver "
        checkproc $VNCSERVER_BIN
        rc_status -v
        ;;
    *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        ;;
esac
rc_exit
 
OP
D

Dino

Newbie
Danke :) ... ich Probiers am Wochenende aus !!

Die letzten Wochen hatte ich leider keine Zeut für das Hobby :?

Gruß
-- Dino
 

dalex

Newbie
Cooles Script.
Aber wie kann ich die Parameter -depth 16 -geometry 1024x768 mit übergeben. In dem Startscript oder der .xstartup im Verzeichniss .vnc im Homeverzeichniss?
Ach ja, bei mir wird dann kde gestartet. Wie sieht dann die Befehlzeile in der .xstartup aus?

Gruß dalex
 
A

Anonymous

Gast
hi,

ich habe exakt das gleiche Problem wie Dino in seinem ersten Post.
Der andere Weg über das Startskript ist ok, aber gibt es auch eine Möglichkeit, das in der xinetd.d/vnc so zu konfigurieren, dass bei wait=yes ein connect möglich ist?

gruß
 
Status
Für weitere Antworten geschlossen.
Oben