Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion de port serie

5 réponses
Avatar
Khanh-Dang
Bonsoir,

j'ai deux ordinateurs reliés via un câble null-modem sur port série. Les
deux tournent sous Linux.
La machine ayant le plus la vocation de fournir des services sera
appelée "serveur". La deuxième machine sera alors appelée "client".

Le serveur est utilisé avec le client principalement pour ce qu'on peut
faire de plus courant via un câble null-modem :
- liaison PPP,
- transfert de fichier du serveur vers le client via des protocoles
adéquats (XMODEM par exemple),
- client utilisé en tant que terminal.

Il serait très pratique de pouvoir échanger les fonctions du serveur à
la volée, chaque fonction ayant ses avantages propres : PPP permet
d'avoir une pile TCP/IP ; XMODEM permet un transfert de fichier beaucoup
plus rapide qu'avec netcat (pas d'overhead dû à l'encapsulation de TCP
puis de IP, puis de PPP) ; la fonction terminal est plus fluide qu'un
simple telnet.

Pour changer entre la fonction serveur XMODEM et la fonction "serveur de
terminal", ça serait peut-être possible, mais je n'ai pas encore réussi
à faire ça avec minicom. Comment serait-il possible d'envisager celà ?

Enfin, il me semble plus difficile de changer, même manuellement entre
PPP et terminal par exemple. A ma connaissance, le programme permettant
celà n'existe pas. En connaitriez-vous un ? Sauriez-vous comment mettre
en oeuvre cette fonction ?

Pour résumer, ce que je cherche est un moyen de changer le mode de
fonctionnement du serveur, à partir du client et seulement à partir du
client.

Merci par avance pour vos réponses,

--
Khanh-Dang

5 réponses

Avatar
Nicolas George
Khanh-Dang wrote in message <424729d3$0$1231$:
Pour changer entre la fonction serveur XMODEM et la fonction "serveur de
terminal", ça serait peut-être possible, mais je n'ai pas encore réussi
à faire ça avec minicom. Comment serait-il possible d'envisager celà ?


Il me semble que la manière de faire ça, c'est de lancer le serveur xmodem
sur le serveur, depuis un shell ou n'importe quoi d'autre, puis de faire
lancer le client xmodem par ton client de terminal (avec minicom, c'est
Ctrl-A S, chez moi). Quand le transfert est fini, le serveur xmodem se
termine et rend la main à ce qui l'a appelé (par exemple le shell), le
client xmodem rend la main à minicom ou autre, et la session se poursuit.

Enfin, il me semble plus difficile de changer, même manuellement entre
PPP et terminal par exemple. A ma connaissance, le programme permettant
celà n'existe pas. En connaitriez-vous un ? Sauriez-vous comment mettre
en oeuvre cette fonction ?


Là encore, tout ce qu'il y a à faire, c'est lancer pppd sur le serveur sans
lui préciser de terminal, ce qui lui fait utiliser celui sur lequel il est
en train de tourner, puis lancer pppd sur le client. La manière assez
typique de faire, c'est d'avoir un script chat pour le client ppp qui
ressemble à ça :

login: root
password: foobar
$ "exec /usr/sbin/pppd <options>"

Ainsi, le pppd client utilise chat pour se loguer en tant que root et lancer
pppd. Évidemment, c'est à ne pas faire : il vaut mieux avoir sur le serveur
un compte dédié dont le shell de login lance pppd directement avec les
bonnes options. Mais c'est ça le principe.

Avatar
Thierry Boudet
On 2005-03-27, Khanh-Dang wrote:

Pour changer entre la fonction serveur XMODEM et la fonction "serveur de
terminal", ça serait peut-être possible, mais je n'ai pas encore réussi
à faire ça avec minicom. Comment serait-il possible d'envisager celà ?

Autre solution: utiliser Kermit qui peut faire émulation de terminal

et transfert de fichiers. Il dispose aussi d'un mode "serveur" où
le kermit distant est piloté par le kermit local, et on se retrouve
avec un fonctionnement analogue à un client ftp.

Pour résumer, ce que je cherche est un moyen de changer le mode de
fonctionnement du serveur, à partir du client et seulement à partir du
client.


Login classique, puis lancement du pppd distant, puis basculement
en local du mode "terminal" au mode "client ppp" ?

--
_/°< coin

Avatar
Khanh-Dang
Pour changer entre la fonction serveur XMODEM et la fonction "serveur de
terminal", ça serait peut-être possible, mais je n'ai pas encore réussi
à faire ça avec minicom. Comment serait-il possible d'envisager celà ?



Il me semble que la manière de faire ça, c'est de lancer le serveur xmodem
sur le serveur, depuis un shell ou n'importe quoi d'autre, puis de faire
lancer le client xmodem par ton client de terminal

Enfin, il me semble plus difficile de changer, même manuellement entre
PPP et terminal par exemple. A ma connaissance, le programme permettant
celà n'existe pas. En connaitriez-vous un ? Sauriez-vous comment mettre
en oeuvre cette fonction ?



Là encore, tout ce qu'il y a à faire, c'est lancer pppd sur le serveur sans
lui préciser de terminal, ce qui lui fait utiliser celui sur lequel il est
en train de tourner, puis lancer pppd sur le client.


Effectivement, je m'en veux de ne pas y avoir pensé.

Si je comprends bien, j'ai un login lancé sur /dev/ttyS0 (par exemple).
Je peux alors me connecter via un émulateur de terminal.
Ensuite, le principe réside dans le fait que le serveur xmodem et le
serveur ppp se lancent en tant que processus fils du programme login
(plus exactement du shell qui est processus fils de login).
Ils héritent alors de l'entrée et de la sortie standard qui est ici
/dev/ttyS0.

Il suffit alors sur la machine émulant le terminal de lancer le
programme client adéquat : rx pour xmodem et pppd pour la connexion ppp.

Merci beaucoup pour la réponse :-)

En revanche, je me pose une question avant même de mettre tout ça en
oeuvre. La question concerne le passage du mode de fonctionnement PPP
vers le mode émulation de terminal.
En effet, quand le serveur xmodem s'arrête, il rend la main au shell.
Pareil pour le serveur ppp a priori. Le seul problème c'est d'arrêter ce
serveur ppp.

En lisant les documentations ci-dessous,
http://www.linux-kheops.com/line/html/line/line-oct1996/datas/ppp.htm#deconnect
http://www.freenix.fr/unix/linux/HOWTO/PPP-HOWTO-17.html
j'ai l'impression que le seul moyen de se déconnecter au niveau de ppp
est de tuer le processus pppd de la machine client. Mais il me semble
bien que le pppd du serveur n'est pas au courant de la déconnexion du
client.
D'ailleurs, j'ai remarqué qu'en éteignant le client, le pppd du serveur
continue de tourner comme si de rien n'était, ce qui justifie ma question.

Je ne vois pas comment faire pour arrêter le processus pppd du serveur
facilement. On pourrait faire quelque chose de sale, comme par exemple
lancer un telnet au-dessus de ppp, lancer une commande qui tue le pppd
du serveur. Mais n'y a-t-il pas une meilleure solution ?


Avatar
Khanh-Dang
Pour résumer, ce que je cherche est un moyen de changer le mode de
fonctionnement du serveur, à partir du client et seulement à partir du
client.



Login classique, puis lancement du pppd distant, puis basculement
en local du mode "terminal" au mode "client ppp" ?



Voir la réponse que j'ai faite à la réponse de N. G.
Je ne sais pas comment faire pour quitter facilement le mode ppp vers le
mode terminal.

Merci pour la réponse.


Avatar
Nicolas George
Khanh-Dang wrote in message
<4247c837$0$19360$:
j'ai l'impression que le seul moyen de se déconnecter au niveau de ppp
est de tuer le processus pppd de la machine client. Mais il me semble
bien que le pppd du serveur n'est pas au courant de la déconnexion du
client.
D'ailleurs, j'ai remarqué qu'en éteignant le client, le pppd du serveur
continue de tourner comme si de rien n'était, ce qui justifie ma question.


Si tu attends un peu, le serveur devrait finir par mourir parce qu'il ne
reçoit pas de réponses du client. Mais ce n'est pas pratique. La solution
canonique, c'est que le serveur PPP se termine en réponse à une déconnexion
au niveau physique, par la réception d'une condition H(ANG)UP sur le
terminal. La manière de provoquer ça est variable. Dans le cas d'une
connexion par modem, c'est le modem qui détecte que la ligne a été
raccrochée et provoque cette condition. Dans le cas d'une connexion vers mon
iPaq, l'extinction de l'iPaq provoque ce HUP. Dans le cas d'un câble série
piloté par minicom, c'est Ctrl-A H qui provoque ça.

Si pppd est le seul process qui gère la ligne série, le HUP devrait être
provoqué par le fait qu'il ferme le terminal, si le mode de terminal HUPCL
est actif. D'après ma lecture des sources de pppd, il faut que l'option
modem soit précisée, et que l'option local ne le soit pas.