Page 1 sur 1
Connexion Telnet
Publié : mer. 24/août/2005 10:50
par Mindphazer
Bonjour à tous
J'ai besoin d'écrire une procédure qui effectue une connection telnet (donc sur le port 23) sur un serveur, envoie le nom d'utilisateur et le mot de passe, puis lance 2 ou 3 commandes avant de se déconnecter, le tout de manière transparente pour l'utilisateur.
J'avoue que je ne sais pas trop par quel bout commencer.....
Quelqu'un aurait-il la gentillesse de me proposer un début de piste ?
Merci d'avance
Publié : mer. 24/août/2005 11:25
par Morsula
Euh bah je débute aussi ^^' Peut être qu'en regardant dans l'aide de PB tu trouvera quelques chose, rubrique Network peut être ?

Publié : mer. 24/août/2005 12:44
par fweil
Il suffit de passer par la commande OpenNetworkConnection(), mais ça s'appliquerai mieux dans la rubrique de tête du forum !!!
Publié : mer. 24/août/2005 12:44
par Mindphazer
Ben oui mais autant j'arrive à me connecter au serveur, autant je ne sais pas comment faire pour attendre la réponse du serveur (c'est à dire comment attendre le prompt qui demande le nom d'utilisateur, etc...)
J'ai beau essayer d'envoyer avec sendnetworkstring les chaînes de connexion, ça ne fonctionne malheureusement pas.... Bouhou.....
Publié : mer. 24/août/2005 13:51
par fweil
A partir de la RFC (voir par exemple
http://www.commentcamarche.net/internet/telnet.php3) tu devrais pouvoir négocier un échange avec un serveur Telnet en utilisant un code du genre ...
Code : Tout sélectionner
Procedure RECV(ConnectionID)
Debug "RECV(" + Str(ConnectionID) + ")"
BufferLength = 1024
*Buffer = AllocateMemory(BufferLength)
Repeat
ReceivedBufferLength = ReceiveNetworkData(ConnectionID, *Buffer, BufferLength)
Debug Str(ReceivedBufferLength) + " bytes received"
Debug PeekS(*Buffer)
HexBuffer.s = ""
For i = 1 To ReceivedBufferLength
HexBuffer + RSet(Hex(PeekB(*Buffer + i - 1)), 2, "0") + " "
Next
Debug HexBuffer
Until ReceivedBufferLength < BufferLength
FreeMemory(*Buffer)
EndProcedure
Procedure SEND(ConnectionID, *Buffer, BufferLength)
Debug "SEND(" + Str(ConnectionID) + ", " + Str(*Buffer) + ", " + Str(BufferLength) + ")"
SendNetworkData(ConnectionID, *Buffer, BufferLength)
EndProcedure
If InitNetwork()
ConnectionID = OpenNetworkConnection("192.168.1.10", 23)
If ConnectionID
Debug "Connected : " + Str(ConnectionID)
RECV(ConnectionID)
s.s = "whateveryouwant"
SEND(ConnectionID, @s, Len(s))
RECV(ConnectionID)
CloseNetworkConnection(ConnectionID)
Else
Debug "Can't connect"
EndIf
EndIf
End
Publié : mer. 24/août/2005 15:08
par Mindphazer
Formidable !
Grâce à ton bout de code et au lien que tu m'as donné, j'ai pu me plonger dans les méandres du protocole telnet....
J'ai ainsi pu obtenir un début de commencement de ce que je voulais faire.
Merci à toi
Et si un jour tu passes par la Savoie, c'est avec joie que je te paierai l'apéro !

Publié : mer. 24/août/2005 15:48
par fweil
Mindphazer,
1 - OK pour l'apéro c'est noté ... j'adore les montagnes et la Savoie en particulier.
2 - Accessoirement tu veux connecter sur quel genre de serveur telnet ? Moi je ne dispose pas d'un serveur de test pour jouer avec, mais ça m'intéresse de voir ce que l'on peut en faire. J'utilise le principe de la connexion ouverte pour pas mal de choses, mais je n'ai pas eu de besoin en Telnet de base. En tout cas si tu as un jeu d'essai ou de démo pour montrer un client / serveur Telnet ce sera sympa de partager cela.
Publié : mer. 24/août/2005 16:05
par Mindphazer
Bon, je suis encore loin d'avoir résolu tous mes problèmes, mais ça avance.
En gros, je me connecte à un serveur Digital afin d'y lancer des programmes pour mon boulot. Ca m'évite de taper des lignes de commande et surtout ça permettra à mes utilisateurs de faire les manipulations sans avoir à connaitre de mot de passe et sans avoir à taper des lignes de commande.
J'avais d'abord pensé utiliser un telnet externe scriptable, que je lance depuis purebasic avec un fichier contenant les lignes de connexion, mais pour un raison assez ténébreuse, ça ne fonctionne qu'à moitié (j'utilisais le programme Tera-Term, mais celui-ci, parfois, n'arrive pas à se connecter à mon serveur)
C'est pour cette raison que j'essaie de me lancer dans la programmation d'un mini client telnet, mais j'avoue que c'est beaucoup plus complexe qu'in n'y paraît.....
Bref, dès que j'arrive à obtenir quelque chose , je ne manquerai pas d'en faire profiter tous ceux que ça pourrait intéresser.......
Publié : mer. 23/nov./2005 15:13
par Golfy
Est-ce que le projet telnet a aboutit ? je suis très intéressé

Publié : mar. 06/déc./2005 13:53
par Mindphazer
Eh bien écoute, pour le moment non. Je n'ai pas avancé, je n'ai pas eu le temps de me pencher sur tous les problèmes.
Je suis passé par une toute autre méthode qui me satisfait mais qui n'utilise absolument pas de connexion telnet.....