Rediriger entrées-sorties d'un terminal vers un autre

Fermé
gnugo - 18 oct. 2012 à 15:52
 gnugo - 25 oct. 2012 à 09:49
Bonjour,

Je cherche à rediriger les entrées sorties d'un terminal vers un autre.

Par exemple, sur une machine sous linux, je lance un gnome-terminal, qui lance un bash.
dans /proc/pid/fd, je peux voir que les entrées-sorties sont reliées à /dev/pts/3

Est-il possible d'ouvrir un autre terminal et de récuperer ce qui s'affiche sur le premier ?
Et dans la foulée est-il également possible d'envoyer des commandes dans le 1er terminal ?


J'ai essayé sans succès des exec </dev/pts/3 2</dev/pts/3 , cat /dev/pts/3 ,....
A voir également:

3 réponses

mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
18 oct. 2012 à 18:57
Tu devrais trouver les réponses à tes questions ici :
https://forums.commentcamarche.net/forum/affich-25960620-recuperer-entree-standard

Bonne chance
1
Merci,
Je viens de tester xdotool qui fonctionne bien pour exécuter des commandes dans une autre fenêtre de terminal.
(J'aimerais pouvoir faire cela sans passer par un utilitaire comme xdotool mais c'est inévitable?)


Hélas, il ne permet pas de lire le résultat: le STDOUT de cet autre terminal, c'est surtout ça qui m'intéresserait.
0
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
22 oct. 2012 à 20:43
As-tu lu le lien précédent ? Car normalement tu peux travailler directement avec /dev/pts
0
J'ai relu le topic du lien que tu m'as donné mais je n'y ai pas trouvé de solution.
Ce que je cherche à faire c'est de pouvoir lire ce qui s'affiche(ou devrait s'afficher) sur un terminal depuis un autre (ce n'est pas grave si on perd l'affichage dans le terminal initial).

Et non pas à afficher du texte dans un terminal depuis un autre avec une commande particulière.


Le premier terminal qui sera "écouté" ou "repris" sera en fonctionnement normal et n'aura rien lancé au préalable facilitant son écoute ou sa prise de contrôle
0
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
Modifié par mamiemando le 24/10/2012 à 19:55
Oui donc ce lien répond bien à ta question, ou alors je n'ai pas bien compris ton besoin.

1) J'ouvre un premier terminal T1 dans lequel je tape :

ls /dev/pts


J'obtiens :

(mando@silk) (~) $ ls /dev/pts/ 
0  1  ptmx


2) J'ouvre un second terminal T2. Dans T1 je répète la commande et j'obtiens désormais

(mando@silk) (~) $ ls /dev/pts/ 
0  1  2  ptmx


T2 correspond donc à /dev/pts/2

3) Dans T1 je me mets à écouter ce qui se passe dans T2

(mando@silk) (~) $ cat </dev/pts/2


4) Si je tape du texte dans T2, il apparaît dans T1. Ainsi T1 "écoute" bien ce qui se passe dans T2.

Bonne chance
0
J'ai essayé aussi mais ça ne fonctionne pas (voir mon premier post).
En fait en faisant ça, il m'arrive parfois de voir la commande tapée dans mon premier terminal dans le second, parfois pas, et jamais je ne vois le résultat d'une commande si j'arrive à en lancer une.

Par exemple si je fais dans mon premier terminal un affichage continu:
while :; do echo "test$(date)"; sleep 1;done

Je vois un message affiché chaque seconde avec la date dans mon 1er terminal. Si j'écoute alors par un cat </dev/pts/X dans un autre terminal, je ne vois rien du tout.
0
mamiemando Messages postés 33108 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 mai 2024 7 753
25 oct. 2012 à 09:36
Ah oui d'accord j'avais mal compris. En fait ce qui est indiqué ci dessus permet de récupérer l'entrée standard de T2, mais pas sa sortie standard. Une piste :
https://www.commandlinefu.com/commands/view/6743/intercept-stdoutstderr-of-another-process-or-disowned-process

Bonne chance
0
Intéressant
Je vais étudier ça
Merci!
0