| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| refmodule [2026/04/17 18:50] – [shm] root | refmodule [2026/06/20 16:33] (Version actuelle) – root |
|---|
| |
| ==== sock ==== | ==== sock ==== |
| Module gérant la communication via sockets, soit côté //serveur// soit côté //client//. | Module gérant la communication sockets, côté //serveur// et côté //client//. Les données transitent __en clair__. |
| * ''server(port)'' : créé un point d'entrée //serveur// sur le n° de <port> indiqué (n° autorisés : 1024 à 65535 uniquement). Le module ne gère qu'un seul serveur actif au même moment. | * ''server(port)'' : créé un point d'entrée //serveur// sur le n° de <port> indiqué (n° autorisés : 1024 à 65535 uniquement). Le module ne gère qu'un seul serveur actif au même moment. |
| * ''wait(timeout, clientSock)'' : attend une demande de connexion entrante depuis un client. Si une demande de connexion est acceptée, <clientSock> contient en retour un id de connexion, à mémoriser car il servira a identifier la connexion à utiliser lors des lectures ''get'' / écritures ''set'' entre ce client et le serveur. Si aucune connexion n'est demandée au bout du délai //timeout// (en secondes), l'id renvoyé dans <clientSock> est négatif, confirmant qu'aucune de demande de connexion n'est arrivée dans le délai indiqué. Le module gère plusieurs connexions entrantes simultanées. | * ''wait(timeout, clientSock)'' : attend une demande de connexion entrante depuis un client. Si une demande de connexion est acceptée, <clientSock> contient en retour un id de connexion, à mémoriser car il servira a identifier la connexion à utiliser lors des lectures ''get'' et écritures ''set'' entre ce client et le serveur. Si aucune connexion n'est demandée au bout du délai //timeout// (en secondes), l'id renvoyé dans <clientSock> est négatif, confirmant qu'aucune de demande de connexion n'est arrivée dans le délai indiqué. Le module gère plusieurs connexions entrantes simultanées. |
| * ''stopServer'' : supprime le point d'entrée serveur créé avec ''server''. | * ''stopServer'' : supprime le point d'entrée serveur créé avec ''server''. |
| * ''connect(host, port, socket)'' : initie une connexion socket au serveur <host> sur le n° de <port> (sans limitation de numéro). Quand la demande est acceptée par le serveur, <socket> contient en retour un id de connexion, à mémoriser car il servira a identifier la connexion à utiliser lors des lectures ''get'' / écritures ''set'' entre ce client et le serveur. Quand la demande est refusée, une exception est générée. Le module gère plusieurs connexions sortantes simultanées. | * ''connect(host, port, socket)'' : initie une connexion socket au serveur <host> sur le n° de <port> (sans limitation de numéro). <host> peut contenir un nom de serveur, mais aussi une adresse IP v4. Quand la demande est acceptée par le serveur, <socket> contient en retour un id de connexion, à mémoriser car il servira a identifier la connexion à utiliser lors des lectures ''get'' / écritures ''set'' entre ce client et le serveur. Quand la demande est refusée, une exception est générée. Le module gère plusieurs connexions sortantes simultanées. |
| * ''stop(socket)'' : arrête la connexion identifiée par l'id <socket>, que ce soit la partie cliente donnée par ''connect'' aussi bien que la partie serveur donnée par ''wait''. | * ''stop(socket)'' : arrête la connexion identifiée par l'id <socket>, que ce soit la partie cliente donnée par ''connect'' aussi bien que la partie serveur donnée par ''wait''. |
| * ''get(socket, data, timeout'') : | * ''get(socket, data, timeout)'' : lit les données venant de l'autre côté de la connexion identifiée par l'id <socket>. Les données lues sont renvoyées dans la chaîne <data>. Si aucune donnée d'est disponible au bout du délai <timeout> donné, (en secondes), la chaîne <data> est renvoyée //vide//. |
| * ''set(socket, data)'' : | * ''set(socket, data)'' : écrit les données de <data> sur la connexion identifiée par l'id <socket>. |
| | |
| | ==== ssh ==== |
| | Module basé sur ''lib_ssh'' permettant l'accès sécurisé à un serveur. |
| | * ''openSession(host, user, mdp)'' : ouvre une connexion sécurisée vers le host (nom ou adresse IP), en utilisant l'authentification //login/mot de passe//. |
| | * ''endSession'' : ferme la connexion courante |
| | * ''execChannel(commande, resultat, timeout)'' : exécute la ''commande'' sur le serveur distant, et lit la réponse dans ''resultat'', en utilisant ''timeout'' comme délai de lecture (en seconde). |
| | * ''openChannel'' : ouvre un //pseudo terminal// sur le serveur distant. |
| | * ''closeChannel'' : termine le //pseudo terminal// distant. |
| | * ''readChannel(resultat, timeout)'' : lit la réponse du serveur distant dans ''resultat'', en utilisant ''timeout'' comme délai de lecture (en seconde). |
| | * ''writeChannel(commande)'' : exécute la ''commande'' sur le serveur distant |
| | |
| | Pour l'exécution de commandes ponctuelles, le worflow typique d'exécution est le suivant : |
| | <code wlang> |
| | ; |
| | invoke ssh&openSession(host, user, mdp) |
| | ; |
| | ; do something |
| | ; |
| | invoke ssh&execChannel(cmd, res, timeout) |
| | ; |
| | ; do another thing |
| | ; |
| | invoke ssh&execChannel(cmd, res, timeout) |
| | ; |
| | ; terminate |
| | invoke ssh&endSession |
| | ; |
| | </code> |
| | |
| | Pour l'exécution de plusieurs commandes à la suite les unes des autres, tel une émulation de terminal distant, voici le workflow à utiliser : |
| | <code wlang> |
| | ; |
| | invoke ssh&openSession(host, user, mdp) |
| | invoke ssh&openChannel |
| | ; |
| | ; read login information |
| | invoke ssh&readChannel(res, timeout) |
| | ; |
| | loop |
| | ; |
| | invoke ssh&writeChannel(cmd) |
| | ; |
| | invoke ssh&readChannel(res, timeout) |
| | ; |
| | endloop |
| | ; |
| | ; terminate |
| | invoke ssh&endSession |
| | ; |
| | </code> |
| ==== system ==== | ==== system ==== |
| Module gérant les liens avec le shell et l'OS hôte. | Module gérant les liens avec le shell et l'OS hôte. |