web-dev-qa-db-fra.com

Comment démarrer VNC Server au démarrage?

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 à démarrage automatique à l'aide de System/Preferences/StartupApplications, mais il s'est retrouvé dans /root/.config/autostart et ne s'est pas exécuté (autant que je sache) au redémarrage. Le fichier de démarrage automatique doit appeler un script bash qui appelle le serveur VNC.

J'ai copié le fichier de démarrage automatique .desktop de /root/.config/autostart à /etc/xdg/autostart et redémarré. Cela n'a pas semblé faire une différence.

Edit Comme mentionné dans un commentaire, l'objectif est d'exécuter mon script bash qui démarre le serveur VNC au démarrage; pas sur un login.

25
H2ONaCl
  1. Commencez par installer le serveur TightVNC Sudo apt-get install tightvncserver.

  2. Configurez le serveur VNC pour l'utilisateur avec lequel vous souhaitez vous connecter. Lorsque vous exécutez "vncserver" pour la première fois, il vous sera demandé de définir un mot de passe. N'autorisez que les connexions SSH tunnellées 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 le texte suivant dans /etc/init.d/vncserver. La façon la plus simple de le faire est de le copier dans votre presse-papiers, d'exécuter Sudo -i && cat > /etc/init.d/vncserver && exit dans un terminal, de le coller et de taper CTRL-D. Assurez-vous de modifier la variable USER en choisissant l'utilisateur sous lequel vous souhaitez 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. Rendre 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 bien utiliser Chicken of the VNC. Sous Windows et Linux, le client TightVNC fonctionne bien.

Source

18
maniat1k

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 insérer n'importe quelle commande, qui sera exécutée en tant que root.

Je pense que cela vous convient tant que vous ne modifiez pas les niveaux d'exécution. (Si vous ne savez pas ce que sont les niveaux d'exécution, ne vous inquiétez pas).

3
Tobias

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

  1. installer un logiciel 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 d'ubuntu est inférieure à 15.04,

vous créez le fichier de configuration sous /etc/init.d/x11vnc.conf et le remplissez avec les commandes à 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 d'ubuntu est la version 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 renseigner avec les commandes à 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 Help Ubuntu Community (voir here ) ou vous pouvez essayer d’utiliser cette recette rapide à utiliser.

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

J'espère que c'est utile

2
Griffon

Si vous utilisez TigerVNC, il installe /etc/init.d/vncserver qui démarre tous les vncservers configurés dans /etc/sysconfig/vncserversEg. Ce qui suit démarre 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
Kashyap

Ajoutez la ligne ci-dessous au fichier crontab. Cela signifie que la commande qui suit le mot clé @reboot est exécutée au cours du très redémarrage.

@reboot /usr/bin/vncserver :1

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

1
rashok

'Sudo update-rc.d vncserver par défaut' a signalé qu'il était manquant; "Required-Stop:" (même vide). Alors je l'ai 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
0
Paulsk

Vous pouvez avoir des choses cron start pour vous au moment du démarrage. Utilisez simplement la chaîne "@reboot" à la place des nombres que vous utilisez normalement pour spécifier le moment où la chose doit être exécutée.

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

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