2010-05-31 02:34:16 +0000 2010-05-31 02:34:16 +0000
31
31

Démarrage automatique du serveur VNC au démarrage

J'ai installé le bureau Ubuntu sur un serveur VPS Ubuntu 9.10 et je suis capable de me connecter au serveur en utilisant TightVNC. Cependant, le serveur VNC sur ce VPS ne peut être démarré qu'en se connectant via SSH et en tapant la commande suivante :

vncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565

Si j'exécute cette commande au démarrage ou comme une tâche de programmation, elle ne démarrera pas. Quelles sont mes options ?

Réponses (5)

29
29
29
2010-05-31 02:51:43 +0000

J'ai trouvé ces instructions en cherchant dans Google ubuntu launch vnc server on startup “.

  1. installez le serveur VNC.
  2. Lancer vncserver pour la première fois afin de définir un mot de passe.
  3. Ajoutez le fichier suivant sous le nom /etc/init.d/vncserver (veillez à modifier l'UTILISATEUR, la GÉOMÉTRIE, le NOM, etc. à votre convenance).
  4. sudo chmod +x /etc/init.d/vncserver
  5. sudo update-rc.d vncserver defaults

/etc/init.d/vncserver

#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: S
# Default-Stop: 0 6
### END INIT INFO

PATH="$PATH:/usr/X11R6/bin/"

# The Username:Group that will run VNC
export USER="mythtv"
#${RUNAS}

# The display that VNC will use
DISPLAY="1"

# Color depth (between 8 and 32)
DEPTH="16"

# The Desktop geometry to use.
#GEOMETRY="<WIDTH>x<HEIGHT>"
#GEOMETRY="800x600"
GEOMETRY="1024x768"
#GEOMETRY="1280x1024"

# The name that the VNC Desktop will have.
NAME="my-vnc-server"

OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

. /lib/lsb/init-functions

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

restart)
$0 stop
$0 start
;;
esac

exit 0
12
12
12
2012-05-05 21:34:45 +0000

Si vous souhaitez une configuration plus dynamique et la possibilité de vous connecter pour plusieurs utilisateurs, il existe une meilleure façon de procéder. En tant que root, créez le fichier (et le répertoire s'il n'existe pas) /etc/sysconfig/vncservers, c'est-à-dire faites-le :

mkdir -p /etc/vncserver
touch /etc/vncserver/vncservers.conf

Ajouter des serveurs selon les besoins de chaque utilisateur en ajoutant quelque chose comme ce qui suit au fichier vncservers.conf que vous venez de créer :

VNCSERVERS="1:justin 2:bob"
VNCSERVERARGS[1]="-geometry 1920x1080 -depth 24"
VNCSERVERARGS[2]="-geometry 800x600 -depth 8"

ensuite, créez un script d'initialisation vide et rendez-le exécutable :

touch /etc/init.d/vncserver
chmod +x /etc/init.d/vncserver

ajouter ce qui suit au fichier /etc/init.d/vncserver :

#!/bin/bash

unset VNCSERVERARGS
VNCSERVERS=""
[-f /etc/vncserver/vncservers.conf] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"

start() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Starting $prog: "
        ulimit -S -c 0 >/dev/null 2>&1
        RETVAL=0
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        DISP="${display%%:*}"
                        export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
                        su ${USER} -c "cd ~${USER} && [-f .vnc/passwd] && vncserver :${DISP} ${VNCUSERARGS}"
                fi
        done
}

stop() {
        . /lib/lsb/init-functions
        REQ_USER=$2
        echo -n $"Shutting down VNCServer: "
        for display in ${VNCSERVERS}
        do
                export USER="${display##*:}"
                if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
                        echo -n "${display} "
                        unset BASH_ENV ENV
                        export USER="${display##*:}"
                        su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
                fi
        done
        echo -e "\n"
        echo "VNCServer Stopped"
}

case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [-f /var/lock/subsys/vncserver]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac

Comme Stephen l'a mentionné dans sa réponse, vous devrez exécuter vncserver AU MOINS UNE FOIS POUR CHAQUE UTILISATEUR sous lequel vous voulez vous connecter. Je mets cela en majuscules car si vous sautez cette étape, rien ne fonctionnera. Donc, en tant que root, vous pouvez le faire :

su justin -c vncserver
su bob -c vncserver

Cela créera un répertoire .vnc dans le répertoire personnel de chaque utilisateur avec les scripts de démarrage appropriés.

Enfin, faites ce qui suit :

update-rc.d vncserver defaults 99

maintenant vous pouvez soit redémarrer soit démarrer le service manuellement en tapant :

service vncserver start
1
1
1
2015-06-28 01:18:17 +0000

J'accède à l'Ubuntu des amis que j'aide, pour installer ou configurer ou pour leur apprendre quelque chose.
Comme j'ai besoin d'un accès à Internet via le modem, j'utilise vino.
Toutes les options de partage et de sécurité sont activées pendant l'accès.
Je ne veux pas que le serveur vino soit actif tout le temps : c'est très bien, il ne s'autodémarre pas.
Je n'avais pas de menu Système>Bureau à distance.
J'ai édité /usr/share/applications/vino-preferences.desktop comme suit :

# OnlyShowIn=Unity;
Exec=bash -c 'vino-preferences;/usr/lib/vino/vino-server&zenity --info --text="Accès par Internet: `curl http://ipecho.net/plain`:5900"'

Avant de travailler, je demande à mes amis d'exécuter Remote Desktop Preferences et de cocher Sharing Allow… on.
En quittant les Préférences, le vino-serveur démarre et ils me donnent l'adresse IP à utiliser.
Quand le travail est terminé, ils lancent à nouveau Préférences pour cocher Partage autorisé… off.
En quittant les Préférences, le vino-serveur s'arrête et s'arrêterait même s'il était démarré dans l'état Sharing off.
Je trouve cette procédure très pratique ainsi que la plus sûre pour l'utilisateur.

PS : les développeurs préfèrent que leurs programmes s'exécutent localement (dans une session utilisateur) car un bug ne peut pas affecter le système global de cette façon.

0
0
0
2013-10-26 21:05:15 +0000

Dans Ubuntu 12.1, j'ai pu aller dans System Settings->Users et sélectionner un utilisateur et définir “Automatic Login->ON”

Ensuite, j'ai pu utiliser tightVNC pour entrer sans avoir à se connecter à la boîte elle-même.

Ça a bien fonctionné pour la boîte ubuntu linux sans tête

0
0
0
2017-01-06 11:27:48 +0000

Je suggère d'utiliser la solution de Stephen Jennings également si vous avez besoin de plusieurs vnc pour différents utilisateurs, en créant simplement plusieurs fichiers vncserver_john, vncserver_bill, … Cela vous permet de les démarrer/arrêter séparément. Il est certain que les bonnes pratiques de programmation suggèrent de mettre le code commun à tous les utilisateurs dans un seul fichier, et de l'extraire de tous les autres.

J'ai “hérité” de la responsabilité d'un serveur où plusieurs collègues font de la programmation scientifique et de l'évaluation de données, chacun avec un vnc séparé. Le serveur fonctionne en fait de manière continue et stable pendant des années, et les utilisateurs deviennent paresseux pour sauvegarder leurs fenêtres ouvertes. Cependant, les serveurs vnc ou les serveurs X11 sont parfois bloqués et il est très ennuyeux de devoir arrêter tous les utilisateurs pour faire fonctionner un serveur.