J'ai essayé de rechercher ce sujet dans Google, mais sans résultats significatifs.
J'ai besoin de démarrer une application graphique depuis un terminal, mais je me fiche de ce que cette application me montre. De plus, je dois démarrer quelques instances de cette application dans différentes sessions. Il est connecté à des tests automatisés d'interface graphique, donc je sais ce que je veux et je cherche une réponse :).
Je pense que les étapes appropriées devraient être:
mais je suis coincé au premier pas. Quelqu'un at-il ici un problème similaire?
--- EDIT: 1) Je me moque de la sortie graphique - je n'ai besoin que de stdout et stderr de mon application. - c'est pourquoi cette question n'est pas en double - connaissez bien Google :). Je ne veux pas rediriger la sortie vers ma propre interface graphique.
Si vous ne vous souciez pas de voir ce que fait l'application, vous pouvez lui fournir un serveur x "virtuel" avec xvfb:
Xvfb fournit un serveur X pouvant fonctionner sur des machines sans matériel d'affichage ni périphérique d'entrée physique. Il émule un framebuffer muet utilisant la mémoire virtuelle. Ce serveur était principalement utilisé pour les tests de serveur, mais d'autres utilisations novatrices ont été découvertes, notamment le test des clients contre des profondeurs inhabituelles et des configurations d'écran, le traitement par lots avec Xvfb en tant que moteur de rendu en arrière-plan, les tests de charge, les aides pour porter le serveur X sur une nouvelle plate-forme et fournir un moyen discret d'exécuter des applications qui n'ont pas vraiment besoin d'un serveur X mais qui exigent de toute façon d'en avoir un.
Après l'avoir installé, vous pouvez le démarrer avec:
Sudo Xvfb :10 -ac -screen 0 1024x768x24 &
ça va fonctionner en arrière-plan, alors vous démarrez vos clients avec:
DISPLAY=:10 your-client
Une courte commande:
ssh -X <username>@<Host> gedit &
de man ssh
-X Enables X11 forwarding.
This can also be specified on a per-Host basis in a configuration file.
X11 forwarding should be enabled with caution. Users with the
ability to bypass file permissions on the remote Host (for the
user's X authorization database) can access the local X11
display through the forwarded connection. An attacker may then
be able to perform activities such as keystroke monitoring.
Vérifiez /etc/ssh/sshd_config
côté serveur:
Sudo nano /etc/ssh/sshd_config
pour les lignes ci-dessous:
X11Forwarding yes
X11UseLocalhost no
Redémarrez ssh ssh, si vous avez apporté des modifications:
Sudo service ssh restart
Vérifiez /etc/ssh/ssh_config
côté client:
Sudo nano /etc/ssh/ssh_config
pour les lignes ci-dessous
ForwardX11 yes
ForwardX11Trusted yes
Vous avez juste besoin d'exécuter export DISPLAY =: id # dans votre session SSH et les programmes exécutés seront exécutés sur l'affichage distant. Un exemple rapide:
maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit
Désormais, gedit
sera exécuté sur l'utilisateur nommé testSSH display
Vous pouvez abréger tout cela en une seule commande:
ssh testSSH@myServer "DISPLAY=:0 Nohup gedit"