Contrôle distant de session X

Bonsoir!

J’aimerai pouvoir interagir avec une session graphique connectée en utilisateur sur un ordinateur sous Linux à distance, à partir d’une console connectée au serveur en SSH par exemple.

Dans une session graphique lancée en local, je peux, en ouvrant une console, interagir avec l’environement de manière très simple. Exemple, avec KDE:

kdialog --msgbox "Mon texte, blablabla\nAu revoir!" --title "Une info"Affichera une fenêtre de dialogue qui contiendra le message :stuck_out_tongue:

dcop kwin KWinInterface nextDesktopPassera sur le bureau suivant.dcop kwin KWinInterface currentDesktopM’informera du bureau actuel.
Les DCOP de KDE permettent de réaliser tout un tas de manipulation sur cet environement, et d’interagir entre autres avec les logiciels graphiques qui y sont lancés, ce qui m’intéresse potentiellement.

Donc, ma question est: comment, en me connectant via SSH depuis une machine distante, puis-je exécuter des commandes qui auront un effet, ou m’informeront de l’était de, par exemple, une session KDE donnée?

Voilà merci de votre aide!

PS: J’ai essayé de me connecter avec le nom d’utilisateur connecté sous KDE sur une machine distante, et de lancer une commande DCOP dans la console, et, sans aucune suprise car je m’y attendais, il me dit qu’il faut lancer un serveur X sur la session pour exécuter cette commande.
Moi ce qu’il me faut c’est ouvrir une console dans la session courrante (déjà logguée et possédant son serveur X).

La commande “screen” ne pourrait-elle pas m’aider?
J’ai tenté mais j’ai pas réussi.

[quote name=‘bluelambda’ date=’ 8 Oct 2005, 10:56’]La commande “screen” ne pourrait-elle pas m’aider?
J’ai tenté mais j’ai pas réussi.
[right][post=“405699”]<{POST_SNAPBACK}>[/post][/right][/quote]

Nope screen permet de lancer une console distante et de la detacher (sans la fermer) et de la ratacher à volonté.

Pour executer des applications avec GUI à distance t’as la commande “ssh -x” mais ça lancera les fenetres sur ton pc et pas sur la machine sur laquelle tu es loggé.

[quote]Pour executer des applications avec GUI à distance t’as la commande “ssh -x” mais ça lancera les fenetres sur ton pc et pas sur la machine sur laquelle tu es loggé.[/quote]Dans mon cas il faut que je lance des commandes, qui ont un effet sur la session X distante, via SSH.
Il doit bien y avoir moyen de faire ça non? Je ne trouve rien pourtant…

[quote name=‘bluelambda’ date=’ 8 Oct 2005, 12:48’]Dans mon cas il faut que je lance des commandes, qui ont un effet sur la session X distante, via SSH.
Il doit bien y avoir moyen de faire ça non? Je ne trouve rien pourtant…
[right][post=“405738”]<{POST_SNAPBACK}>[/post][/right][/quote]
y’a VNC qui permet de prendre le controle à distance d’un ordinateur mais c’est un peu lourd au niveau bande passante parce que ça envoie des screenshots de l’ecran du poste controlé.

Je connais VNC mais ça ne m’intéresse pas pour l’usage que je veux faire…

Ce qu’il faut c’est que je puisse me connecter à chaque PC dont je suis l’admin (duquel je possède le mot de passe root donc) et interagir avec les sessions graphiques des utilisateurs connectés, sans n’avoir rien à installer sur ces ordis.

Je sais pas si c’est possible mais ce serait trop bien si ce l’était et si quelqu’un pouvait m’aider :stuck_out_tongue:

[quote name=‹ bluelambda › date=’ 8 Oct 2005, 18:46’]Je connais VNC mais ça ne m’intéresse pas pour l’usage que je veux faire…

Ce qu’il faut c’est que je puisse me connecter à chaque PC dont je suis l’admin (duquel je possède le mot de passe root donc) et interagir avec les sessions graphiques des utilisateurs connectés, sans n’avoir rien à installer sur ces ordis.

Je sais pas si c’est possible mais ce serait trop bien si ce l’était et si quelqu’un pouvait m’aider :stuck_out_tongue:
[right][post=« 405801 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Bah certaines commandent peuvent avoir des effets sur les sessions X comme kill et celles que tu cites au début mais lancer un firefox sur son pc à travers ssh tu pourras le faire que avec VNC à mon avis.

J’ai trouvé ça:
http://developer.kde.org/documentation/tut…kdialog/t1.html
Ca explique toutes les possibilités offertes par la commande kdialog.

Est t-il possible, depuis un programme C, de récupérer simplement le résultat d’une commande kdialog (je ne veux pas parler du résultat qui signale une erreur, je veux juste savoir ce qu’a écrit l’utilisateur dans la zone de texte, où si il a cliqué sur OK/Cancel…?

essaye avec un “xhost +ton_ip && export DISPLAY=localhost:0.0”, et après, t’execute tes commandes. ca fera peut-être ton affaire…

+1, la variable DISPLAY permet d’exécuter un programme sur n’importe quel serveur X, mais je ne me souvient plus du tout comment bien l’utiliser, cherche plutot de ce coté.

Ca semble possible de cette manière là on dirait :stuck_out_tongue:

Comment connaître les sessions X lancées sur une machine, à partir de ma console SSH connectée à cette machine?
Y a t-il une commande qui affiche tous les DISPLAY disponnibles?

EDIT: en passant, quelqu’un saurait t-il comment afficher des fenêtres de dialogues sur une session Gnome (pour poser des questions et attendre une réponse de l’utilisateur par exemple)?
Je connais kdialog sous KDE qui me permet de demander des questions oui/non à utilisateur graphique distant (via la variable DISPLAY :stuck_out_tongue: ) et permet de demander des réponses textes, etc… Y a t-il une commande semblable pour Gnome (voire pour X tout court)?

EDIT: il semblerai qu’il y ai gdialog mais je n’ai pas eu l’occasion de tester encore.

la méthode xhost (pour dire que depuis ton truc distant, tu peux envoyer des programmes sur le serveur X) + DISPLAY est une méthode X, donc pas sectaire. Et ca marche pour tous les programmes X (normalement)
et puis pour voir les sessions X lancées sur la machine, regarde du coté de /var/lock.

bon, a priorisu http://www.faqs.org/docs/Linux-mini/Remote-X-Apps.html#s7 t’as peut-être de quoi savoir quel display/screen est utilisé par X

Bon voila, j’ai testé, ça marche niquel :stuck_out_tongue:
Voici comment je fais (la méthode la plus simple je trouve):

$ ssh utilisateur@adresse
Password: (mot de passe)

$ who
utilisateur tty1 date
utilisateur :0 date (en gras le numéro de la session X qui nous intéresse)

$ export DISPLAY=:0.0

Et là, les commandes que je tape sont applicables sur la session X que j’ai choisie, je peux donc lancer des message box, avec des questions, récupération des réponses (zenity sous Gnome, kdialog sous KDE), où même exécuter des DCOP KDE pour interagir sur la session et les logiciels.

Merci de votre aide, ça a été long mais on a fini par trouver une solution viable :stuck_out_tongue:

t’as jetté un coup d’oeuil sur vino ? C’est un soft d’admin à distance pour gnome…
et installé par défaut. T’as besoin d’un client vnc de l’autre côté par contre…