URL: https://linuxfr.org/forums/astucesdivers/posts/terminal-rediffuser-un-terminal-en-direct Title: [Terminal] rediffuser un terminal en direct Authors: Krunch Date: 2007年05月27日T18:25:39+02:00 Tags: Score: 1 Il est quelques fois utile de montrer à quelqu'un _via_ le réseau ce qu'on fait dans un terminal. Une manière courante de procéder est d'utiliser screen(1). Cependant cela implique de donner un compte local à l'observateur et de configurer screen(1) correctement pour qu'il puisse se connecter à la session sans pour autant pouvoir interagir avec le terminal. Sans compter que screen(1) doit être installé. Une autre méthode consiste simplement à utiliser script(1) (paquet essentiel _bsdutils_ sous Debian) qui permet de copier tout ce qui se passe dans un terminal vers un fichier. Au lieu d'utiliser un fichier normal il suffit d'utiliser une file FIFO (un tube nommé) dont le contenu sera renvoyé à l'observateur. En pratique : pwait$ mkfifo plop pwait$ nc -l -p 4242 < plop > /dev/null & [1] 6216 pwait$ script -f plop Script started, file is plop pwait$ Et du côté de l'observateur : coin$ nc pwait 4242 pwait$ À partir de ce moment, tout ce qui est tapé dans le terminal du serveur est aussi affiché sur le terminal du client. Alternativement, du côté client on peut remplacer netcat (nc(1)) par telnet(1) qui a sans doute plus de chance d'être installé. Cette méthode est cependant limitée car elle ne permet qu'à un seul observateur à la fois de se connecter et lorsque ce dernier se déconnecte, script(1) se termine, interrompant ainsi l'action qui se déroulait sur le serveur. En attendant un patch pour netcat, voici toujours un petit programme qui accepte un nombre arbitraire de clients et leur renvoie son entrée standard. pwait$ wget -q http://krunch.servebeer.com/~krunch/vrac/sw/tcpmux.c pwait$ cc -DNDEBUG -Wall -W -pedantic -std=c99 -o tcpmux tcpmux.c pwait$ ./tcpmux 4242 < plop & [1] 6380 pwait$ script -f plop Script started, file is plop pwait$ Du côté client, on se connecte toujours de la même manière : coin$ nc pwait 4242 pwait$ Sauf que cette fois, on peut connecter plusieurs clients (voire la macro MAX_CLIENTS de tcpmux.c) et la déconnexion des clients n'interrompt pas script(1). Merci à dek\ de #gcu pour l'idée du script+mkfifo+nc et à phh de #linuxfr pour le tcp-multiplexer.py original.