OVH Cloud OVH Cloud

X11Forwarding magique

18 réponses
Avatar
Yves Rutschle
Bonjour les gens,

Si j'ai une machine A, où tourne une session de Firefox, et
que je me loggue sur une machine B en faisant suivre
l'affichage (ssh -X B), et que je lance un nouveau firefox
sur la machine B, magiquement il semble que la machine B
dise au Firefox de la machine A, qui ouvre alors une
nouvelle fenêtre.

- Par quelle magie cela se passe? Je croyais que ssh -X ne
faisait suivre que l'affichage des fenêtre, apparement il
en fait plus...
- Comment l'éviter, dans le cas où je veux vraiment lancer
un Firefox sur la machine B?

Y. - surpris.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

8 réponses

1 2
Avatar
tnemeth
Selon Yves Rutschle :

| On Wed, Feb 23, 2005 at 10:30:29AM +0100, wrote:
| > | - La machine A se connecte à B en ssh
| > Heu, non, c'est l'inverse...
|
| Non non.

Ah bon alors je n'avais pas compris le post initial :(


| > | - Un shell est donc lancé sur la machine B avec un display sur la
| > | machine A
| >
| > - Un shell est lancé sur la machine A avec un display sur B.
|
| Non, la machine B n'a d'ailleurs pas d'écran. Tout
| l'affichage se passe sur A.

Ok.



| Je récapète depuis le bedut:
|
| - Je travaille sur la machine A (qui est donc aussi ma
| console, avec son display et tout). J'ai là une instance
| de Firefox.
| - Je me connecte par ssh sur la machine B. (Incidemment, la
| machine B n'a aucun moyen de se connecter sur A, pour
| causes de pas de clés et de pare-feux).
| - Je lance Firefox sur la machine distante B.
| - Magiquement, Firefox sur la machine B trouve l'instance de
| Firefox qui tourne sur la machine A, et lui dit d'ouvrir
| une nouvelle fenêtre, comme si j'avais lancé un nouveau
| Firefox sur A. Il n'y a ensuite plus de processus Firefox
| sur B.

Dans ce cas effectivement, c'est Jean-Yves qui a raison : le
script de lancement de firefox contient ceci :

# check to see if there's an already running instance or not
verbose "Running: ${MOZ_PROGRAM} -remote 'ping()'"
DISPLAY="${CMDLINE_DISPLAY}" ${MOZ_PROGRAM} -remote 'ping()'
> /dev/null 2>&1
PING_STATUS=$?



Il lance donc sur l'host (machine A pour toi) une commande
d'ouverture en remote (que le DISPLAY soit local ou distant
d'ailleurs).


Thomas.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Nooks L. Affro
On Tue, Feb 22, 2005 at 02:09:57PM +0000, Yves Rutschle wrote:
Bonjour les gens,

Si j'ai une machine A, où tourne une session de Firefox, et
que je me loggue sur une machine B en faisant suivre
l'affichage (ssh -X B), et que je lance un nouveau firefox
sur la machine B, magiquement il semble que la machine B
dise au Firefox de la machine A, qui ouvre alors une
nouvelle fenêtre.

- Par quelle magie cela se passe? Je croyais que ssh -X ne
faisait suivre que l'affichage des fenêtre, apparement il
en fait plus...
- Comment l'éviter, dans le cas où je veux vraiment lancer
un Firefox sur la machine B?




Je pense qu'il s'agit tout simplment de la fonction remote de
netscape .. pardon firefox . Cette fonction existe depuis netacspe 3 !!!.
On peut l'utiliser pour acceder a des fonction avancees de netscape a
partir d'un script. extrait de 'firefox -h'

-remote <command> Execute <command> in an already running
Mozilla process. For more info, see:

http://www.mozilla.org/unix/remote.html



Nooks,

Y. - surpris.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact






--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12837ième jour après Epoch,
écrivait:

Dans ce cas effectivement, c'est Jean-Yves qui a raison



Non, toujours pas ...

: le
script de lancement de firefox contient ceci :

# check to see if there's an already running instance or not
verbose "Running: ${MOZ_PROGRAM} -remote 'ping()'"
DISPLAY="${CMDLINE_DISPLAY}" ${MOZ_PROGRAM} -remote 'ping()'
> /dev/null 2>&1
PING_STATUS=$?



Il lance donc sur l'host (machine A pour toi) une commande
d'ouverture en remote (que le DISPLAY soit local ou distant
d'ailleurs).



Le script ne lance pas quoi que ce soit ailleurs... Il est lancé sur
B, et le '-remote' sert à s'adresser à une éventuelle autre instance
de mozilla sur la même machine.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
tnemeth
Selon François TOURDE :

| Le 12837ième jour après Epoch,
| écrivait:
|
| > Dans ce cas effectivement, c'est Jean-Yves qui a raison
|
| Non, toujours pas ...

Heu... Si :)


| > : le
| > script de lancement de firefox contient ceci :
| >
| >> # check to see if there's an already running instance or not
| >> verbose "Running: ${MOZ_PROGRAM} -remote 'ping()'"
| >> DISPLAY="${CMDLINE_DISPLAY}" ${MOZ_PROGRAM} -remote 'ping()'
| >> > /dev/null 2>&1
| >> PING_STATUS=$?
| >
| > Il lance donc sur l'host (machine A pour toi) une commande
| > d'ouverture en remote (que le DISPLAY soit local ou distant
| > d'ailleurs).
|
| Le script ne lance pas quoi que ce soit ailleurs... Il est lancé sur
| B, et le '-remote' sert à s'adresser à une éventuelle autre instance
| de mozilla sur la même machine.

Je n'ai pas dit qu'il le lançait ailleurs !
Techniquement voici comment ça se passe (ÀMHA : c'est comme ça que
je ferais si j'avais à le faire) :
* lancement sur la machine distante de firefox avec l'option
-remote 'ping()'
* le processus "firefox" local à la machine distante contacte la
machine appelante par un moyen qui lui est propre (normalement un
port > 1024)
- s'il trouve le port ouvert, envoie une commande à ce port et se
ferme (c'est ce à quoi sert l'option -remote)
- sinon continue seul en local.

Thomas.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12837ième jour après Epoch,
écrivait:

Selon François TOURDE :

| Le 12837ième jour après Epoch,
| écrivait:
|
| > Dans ce cas effectivement, c'est Jean-Yves qui a raison
|
| Non, toujours pas ...

Heu... Si :)



Euh... Non ;)

* le processus "firefox" local à la machine distante contacte la
machine appelante par un moyen qui lui est propre (normalement un
port > 1024)



Fais l'expérience de lancer firefox ou mozilla, et regarde les ports
ouverts. Aucun ne correspond à ce que tu supposes.

- s'il trouve le port ouvert, envoie une commande à ce port et se
ferme (c'est ce à quoi sert l'option -remote)



Non, l'option "remote" sert à envoyer une commande à une autre
instance de firefox/mozilla, sur la même machine.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
tnemeth
Selon François TOURDE :

| Le 12837ième jour après Epoch,
| écrivait:
|
| > Selon François TOURDE :
| >
| > | Le 12837ième jour après Epoch,
| > | écrivait:
| > |
| > | > Dans ce cas effectivement, c'est Jean-Yves qui a raison
| > |
| > | Non, toujours pas ...
| >
| > Heu... Si :)
|
| Euh... Non ;)

Pfff :) Têtu, va !


| > * le processus "firefox" local à la machine distante contacte la
| > machine appelante par un moyen qui lui est propre (normalement
| un
| > port > 1024)
|
| Fais l'expérience de lancer firefox ou mozilla, et regarde les ports
| ouverts. Aucun ne correspond à ce que tu supposes.

Je n'ai pas firefox ni mozilla sous la main. Par contre j'ai le
code de firefox. Mais effectivement, il ne doit pas y avoir de
port ouvert : cf le code source de firefox.


| > - s'il trouve le port ouvert, envoie une commande à ce port et
| se
| > ferme (c'est ce à quoi sert l'option -remote)
|
| Non, l'option "remote" sert à envoyer une commande à une autre
| instance de firefox/mozilla, sur la même machine.

Et non :)
Voici la partie intéressante du code de firefox :

XChangeProperty (mDisplay, aWindow, mMozCommandAtom, XA_STRING, 8,
PropModeReplace, (unsigned char *)aCommand,
strlen(aCommand));

Par cette commande, firefox (de la machine distante, s'affichant
en local par le DISPLAY 10:0) change une propriété stockée dans
le serveur X, laquelle propriété contient la commande (commande
passée en option de l'argument -remote en général).
Du coup, l'instance locale recevant les événements de
modification de propriété X ou vérifiant à intervalle réguliers
(pas envie de me farcir tout le code de firefox) reçoit du coup
la commande...

Ouala.


Thomas.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12837ième jour après Epoch,
écrivait:

Selon François TOURDE :

| Le 12837ième jour après Epoch,
| écrivait:
|
| > Selon François TOURDE :
| >
| > | Le 12837ième jour après Epoch,
| > | écrivait:
| > |
| > | > Dans ce cas effectivement, c'est Jean-Yves qui a raison
| > |
| > | Non, toujours pas ...
| >
| > Heu... Si :)
|
| Euh... Non ;)

Pfff :) Têtu, va !



:) .. Chuis pas le seul, hein?

Et non :)
Voici la partie intéressante du code de firefox :

XChangeProperty (mDisplay, aWindow, mMozCommandAtom, XA_STRING, 8,
PropModeReplace, (unsigned char *)aCommand,
strlen(aCommand));

Par cette commande, firefox (de la machine distante, s'affichant
en local par le DISPLAY 10:0) change une propriété stockée dans
le serveur X, laquelle propriété contient la commande (commande
passée en option de l'argument -remote en général).
Du coup, l'instance locale recevant les événements de
modification de propriété X ou vérifiant à intervalle réguliers
(pas envie de me farcir tout le code de firefox) reçoit du coup
la commande...



Ahhhh!! Cool... Voilà l'explication alors ! Ce vilain firefox prends
en charge les fenêtres qui ne viennent pas forcément de sa propre
instance ni de sa propre machine :(

Bref, même si c'est un HS flagrant (c'est pas spécifique Debian,
hein?) ça montre qu'on est moins bêtes à plusieurs.

Merci à tout le monde (et surtout à thomas qui a supporté ma
"testudère") au fil de ce ... fil.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
tnemeth
Selon François TOURDE :

| Le 12837ième jour après Epoch,
| écrivait:
|
| > Selon François TOURDE :
| >
| > Pfff :) Têtu, va !
|
| :) .. Chuis pas le seul, hein?

Tout à fait :))


| > Et non :)
| > Voici la partie intéressante du code de firefox :
| >
| > XChangeProperty (mDisplay, aWindow, mMozCommandAtom, XA_STRING,
| 8,
| > PropModeReplace, (unsigned char *)aCommand,
| > strlen(aCommand));
[...]
|
| Ahhhh!! Cool... Voilà l'explication alors ! Ce vilain firefox prends
| en charge les fenêtres qui ne viennent pas forcément de sa propre
| instance ni de sa propre machine :(

Je dirais plutôt ":)" : c'est ingénieux et pas con d'utiliser
les ressources disponibles sans ouvrir de canal supplémentaire...


| Bref, même si c'est un HS flagrant (c'est pas spécifique Debian,

Mais non ce n'est pas HS : il paraît qu'on peut discuter de
plein de trucs qui sont dans la Debian et à propos de Linux
et de ses outils (tout comme firefox).


| hein?) ça montre qu'on est moins bêtes à plusieurs.

Sûr !


| Merci à tout le monde (et surtout à thomas qui a supporté ma
| "testudère") au fil de ce ... fil.

J'avais autant envie de comprendre que tout le monde. Ça m'a
tout de même obligé à télécharger le CVS de firefox. Heureusement
que je suis au taf ;) : en RTC chez moi je ne l'aurai pas fait.


Thomas.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2