Si j'ai un système Ubuntu 12.04 sur lequel LXDE et TightVNCserver sont installés et que je lance une session sur le port :1
(non tunnelé via SSH) et une connexion SSH active, comment puis-je utiliser SSH pour démarrer un programme nécessitant une connexion active afficher pour utiliser la session tightVNC disponible?
Je voulais utiliser SSH pour démarrer un fichier Java qui démarre normalement lorsqu'il est lancé à l'intérieur de la session vnc, mais j'obtiens une erreur:
xxx@yyy:~# Java zzz
Exception in thread "main" Java.lang.ExceptionInInitializerError
Caused by: Java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at Sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.Java:282)
at zzz.<clinit>(zzz.Java:35)
Pour le reformuler: je veux démarrer un programme et le laisser utiliser la fenêtre de la session ouverte VNC sans utiliser la session de visualisation du client VNC pour le démarrer, est-ce possible?
(Je pense que tout programme nécessitant un affichage réagirait de cette façon, donc je pense que ce n'est pas tellement une question Java mais une question ssh/vnc)
Essayez de définir la variable DISPLAY
sur le serveur X de la session VNC:
DISPLAY=:1 Java xxx
Vous devrez activer le transfert X11 pour le transférer sur votre propre serveur X11 (vous avez donc besoin d'un serveur X11 en cours d'exécution sur le client à partir duquel vous utilisez SSHing).
Cela peut être fait en ajoutant -X
à votre commande SSH. Exemple: ssh -X user@server
Assurez-vous ensuite que la variable $ DISPLAY est définie sur le bon affichage. Vérifiez ceci avec echo $DISPLAY
Si ce que vous essayez d'atteindre consiste à accéder à une fenêtre ouverte sur votre serveur X11 via SSH, je vous suggère de jeter un coup d'œil à ceci: http://www.wensley.org.uk/x =
Il explique comment obtenir un comportement similaire à 'screen', mais avec les applications X11.