Comment démarrer VNC Server au démarrage?


29

Comment créer un fichier de démarrage automatique à l'échelle du système? Ce serait sur un serveur cloud exécutant la version de bureau de Maverick.

Je me suis connecté en tant que root et j'ai créé un fichier de démarrage automatique en utilisant System/Preferences/StartupApplicationsmais il s'est retrouvé /root/.config/autostartet ne s'est pas exécuté (pour autant que je sache) lors du redémarrage. Le fichier de démarrage automatique consiste à appeler un script bash qui appelle le serveur VNC.

J'ai copié le fichier de démarrage automatique de .desktop /root/.config/autostartà /etc/xdg/autostartet redémarré. Cela ne semble pas faire de différence.

Modifier Comme mentionné dans un commentaire, l'objectif est d'exécuter mon script bash qui démarre le serveur VNC au démarrage; pas lors d'une connexion.


voulez-vous dire démarrage automatique au démarrage ou démarrage automatique lorsque quelqu'un (n'importe qui) se connecte?
fossfreedom

Je veux que le serveur VNC démarre automatiquement au démarrage.
H2ONaCl

1
J'ai trouvé une réponse sur SU SE superuser.com/questions/147109/… essayez-le
wisemonkey

VNC ne nécessite-t-il pas un écran pour fonctionner?
desgua

Réponses:


19
  1. Tout d'abord, installez le serveur TightVNC sudo apt-get install tightvncserver.

  2. Configurez le serveur VNC pour l'utilisateur sous lequel vous souhaitez vous connecter. Lorsque vous exécutez "vncserver" pour la première fois, il vous demandera de définir un mot de passe. autoriser uniquement les connexions tunnellisées SSH ou VPN. Pour lancer des programmes ou une session lorsque votre session VNC démarre, modifiez ~/.vnc/xstartup. Voici un exemple.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Copiez ce qui suit dans /etc/init.d/vncserver. La façon la plus simple de le faire est de le copier dans votre presse-papiers, de l'exécuter sudo -i && cat > /etc/init.d/vncserver && exitdans un terminal, de le coller et de taper CTRL-D. Assurez-vous de changer la variable USER en quel utilisateur vous voulez que le serveur VNC s'exécute.

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Default-Start:     3 4 5
    # 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
    
  4. Rendez le script exécutable avec sudo chmod +x /etc/init.d/vncserver.

  5. Enfin, connectez-vous à votre serveur avec un client VNC sur le port 590X, où X est la valeur de "DISPLAY" dans le script vncserver. Sur OS X, j'aime utiliser Chicken of the VNC. Sous Windows et Linux, le client TightVNC fonctionne bien.

La source


Ce superuser.com/questions/147109/… de wisemonkey est la réponse équivalente à stackexchange. Ça marche. Notez que le chemin vers X11 peut nécessiter un ajustement.
H2ONaCl

TigerVNC installe /etc/init.d/vncserverqui démarre tous les serveurs vnc configurés dans/etc/sysconfig/vncservers
Kashyap

5
Ceci a été copié-collé à partir de abdevelopment.ca/blog/start-vnc-server-ubuntu-boot , mais il est parti de l' étape la plus importantesudo update-rc.d vncserver defaults
Hai Phan

3

Une possibilité: /etc/rc.local

Le contenu le dit:

# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits. 
#
# By default this script does nothing

Les bits d'exécution sont déjà définis sur 755 sur mon système. (chmod 755 /etc/rc.local)

Vous pouvez y mettre n'importe quelle commande, qui sera exécutée en tant que root.

C'est correct pour votre objectif tant que vous ne changez pas les niveaux d'exécution, je suppose. (Si vous ne savez pas ce que sont les niveaux d'exécution, peu importe).


2
Cette suggestion n'a pas fonctionné pour moi.
H2ONaCl


@CeesTimmerman, merci mais ces 2 réglages n'ont pas fonctionné.
H2ONaCl

2

Si vous utilisez TigerVNC, il installe /etc/init.d/vncserverce qui démarre tous les serveurs vnc configurés dans /etc/sysconfig/vncservers Par exemple, le démarrage de 2 instances sur les écrans 1 et 2 au démarrage.

# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"

2

cela semble être un ancien article, mais le sujet pourrait être intéressant pour certains utilisateurs. Pour que vnc démarre au démarrage, vous devrez

  1. installer un logiciel de serveur vnc (ici, nous utiliserons x11vnc)
  2. configurer un script de démarrage (utilisé pour démarrer le service vnc)

Étape 1 - Installer le serveur x11vnc

à partir d'une ligne de commande, tapez

 sudo apt-get install x11vnc

Pour ajouter de la sécurité, vous devez définir un pwd

sudo x11vnc -storepasswd

Étape 2 - Configurez votre script de démarrage

  • si votre version ubuntu est inférieure à 15.04,

vous créez le fichier de configuration sous /etc/init.d/x11vnc.confet le remplissez avec les commandes correctes à exécuter

start on login-session-start  
script  
/usr/bin/x11vnc -xkb -auth
/var/run/lightdm/root/:0
-noxrecord -noxfixes -noxdamage 
-rfbauth /etc/x11vnc.pass 
-forever -bg -rfbport 5900 -o /var/log/x11vnc.log  
end script
  • si votre version ubuntu est 15.04 ou ultérieure,

ces systèmes utilisent systemd et vous devrez créer votre fichier d'unité de service sous /lib/systemd/system/x11vnc.service et le remplir avec les commandes correctes à exécuter

[Unit] Description=Start x11vnc at startup. After=multi-user.target

[Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever
-loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared

[Install] WantedBy=multi-user.target

Recharger le service

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

Vous pouvez trouver des informations détaillées sur la page wiki de la communauté d'aide Ubuntu (voir ici ) ou vous pouvez essayer d'utiliser cette recette rapide à utiliser

  • Pour la version Ubuntu inférieure à 15.04 , consultez cet article
  • Pour Ubuntu version 15.04 ou ultérieure , consultez cet article

J'espère que cela vous sera utile


1

Ajoutez la ligne ci-dessous au fichier crontab. Cela signifie que la commande après l' @rebootexécution du mot clé lors du redémarrage.

@reboot /usr/bin/vncserver :1

Pour ouvrir le fichier crontab, vous devez utiliser la commande crontab -e


Identique à cette réponse de 6 ans: askubuntu.com/a/124079/158442
muru

0

Vous pouvez avoir des trucs de démarrage cron pour vous au démarrage. Utilisez simplement la chaîne "@reboot" à la place des nombres que vous utilisez normalement pour spécifier quand la chose doit s'exécuter.

Par exemple, voici comment démarrer Dropbox sur une machine sur laquelle il ne démarre pas automatiquement autrement:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start

Cette page indique que cela ne fonctionne que si le système redémarre réellement (pas de démarrage à froid).
Cees Timmerman

0

«sudo update-rc.d vncserver defaults» a signalé qu'il manquait; "Obligatoire-Stop:" (même vide). Je l'ai donc ajouté comme ci-dessous. Et plus d'avertissement.

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Required-Stop:     
    # Default-Start:     3 4 5
    # Default-Stop:      0 6
    ### END INIT INFO
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.