|
| [WD17] Connexion SSH (linux) |
| Débuté par technique, 08 fév. 2012 17:47 - 15 réponses |
| |
| | | |
|
| |
| Posté le 08 février 2012 - 17:47 |
Bonjour, Je désirerai établir une communication sécurisé SSH avec un Linux à partir de Windev 17. J'ai vu sur le forum un composant CSSH4WD de la société Librasoft, quelqu'un connait ce composant ? fonctionne t-il bien ? Existe t'il un classe ou autres... (libre de droit) pour communiquer en SSH avec un Linux ??? Merci Olivier |
| |
| |
| | | |
|
| | |
| |
| Posté le 10 février 2012 - 08:10 |
| A priori, je n'inspire personne avec ma question sur la connexion SSH vers un linux ! |
| |
| |
| | | |
|
| | |
| |
| Posté le 10 février 2012 - 12:40 |
Bonjour,
Le 10/02/2012 07:10, Olivier a écrit :
A priori, je n'inspire personne avec ma question sur la connexion SSH vers un linux !
La première est d'utiliser putty, http://www.chiark.greenend.org.uk/~sgtatham/putty/. Il suffit d'appeler l'outil en ligne de commande.
Il existe un fork de putty qui est extraputty, qui fournit en plus une API donc plus adapter pour un appel direct de Windev.
http://www.extraputty.com/
Je pense que l'outil que vous citez est simplement une classe d'accès à ces programmes.
-- suivre ce lien pour répondre: http://cerbermail.com/… Daniel  |
| |
| |
| | | |
|
| | |
| |
| Posté le 22 février 2012 - 11:06 |
Bonjour, Je suis également intéressé par ce sujet... et je recherche toutes informations ou des bouts de code qui fasse avancer le sujet ! Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 22 février 2012 - 11:10 |
Bonjour,
Je teste actuellement la dll extraputty dans le but de communiquer en SSH avec un switch.
La connexion se passe bien par contre je n'arrive pas à lire le résultat lors de l'envoi d'une commande au switch.
Je n'arrive à trouver comment utiliser la procédure callback.
Voici les gabarits des deux fonctions de l'API extraputty:
int Connexion(char *TargetName, unsigned long *ConnectionId,char *Login,char *Password,bool ShowPuTTY,long Protocol, unsigned long PortNumber,long GenerateReport,int *CallBackRcvData,unsigned long SpecSettings);
int SendRcvData(unsigned long ConnectionId,char *Command,char *Title,char *Comments,long TimeCapture,char **DataRcv,long MaxSizeofData,unsigned long settings);
et la description du paramètre CallBackRcvData de la fonction Connexion :
CallBackRcvData Optional parameter,callback used to receive data from putty terminal, Syntax : int CallBackRcvData(unsigned long ConnectionId,char *buf, DWORD size,DWORD ConnectionStatus) ConnectionStatus : · 0 : Connection open · 1 : Connection close by host
Voici mon code :
// var globale : Datarcv est une chaîne sur 10000
// fonction callback : PROCEDURE CallBackRcvData(ConnectionID est un entier, Buf est une chaîne, Size est un entier, ConnectionStatus est un entier) Datarcv = Buf RENVOYER 0
// code principal nIdDLL est un entier nResultat est un entier nConnection est un entier sur 8 octets
nIdDLL = ChargeDLL("ExtraPuTTY.dll")
SI nIdDLL = 0 ALORS
Erreur("Erreur lors du chargement de la DLL")
SINON
nResultat = AppelDLL32("ExtraPuTTY.dll", "Connexion", "192.168.175.19", &nConnection, "user", "pwd", False, 1, 22, 0, &CallBackRcvData, 0)
nResultat = AppelDLL32("ExtraPuTTY.dll", "SendRcvData", nConnection, "show vlan", "", "", 1000, &Datarcv, 10000, 0)
Trace(nResultat + RC + Datarcv)
AppelDLL32("ExtraPuTTY.dll", "CloseConnexion", nConnection)
DéchargeDLL(nIdDLL)
FIN
Actuellement le programme plante sur l'appel à la fonction SendRcvData...
Merci d'avance pour vos conseils. |
| |
| |
| | | |
|
| | |
| |
| Posté le 06 mars 2012 - 10:09 |
Bonjour, As-tu avancé sur l'utilisation de la DLL pour SSH, car j'ai le même problème que toi, et je dois avouer que je suis complètement bloqué depuis pas mal de temps. Merci !!! Marc |
| |
| |
| | | |
|
| | |
| |
| Posté le 06 mars 2012 - 16:53 |
Bonjour, Avec la DLL ExtraPutty, je n'arrive pas à me connecter... j'ai irrémédiablement une erreur 1 ! alors que le port 22 est accessible (j'arrive à me connecter avec un autre programme). Quelqu'un à le même soucis ? Merciiiii Olivier
nIdDLL = ChargeDLL("ExtraPuTTY.dll") SI nIdDLL = 0 ALORS Erreur("Erreur DLL") SINON nResultat = AppelDLL32("ExtraPuTTY", "Connexion", "192.168.1.88", &nConnection, "root", "root", False, 1, 22, 0, &CallBackRcvData, 0) FIN |
| |
| |
| | | |
|
| | |
| |
| Posté le 06 mars 2012 - 18:13 |
Bonjour Julien... Si j'arrive à me connecter... et si je trouve une solution pour l'envoie de commande, je te donnerai un bout de programme. Mais pour l'instant, j'ai toujours le retour 1 à la commande "Connexion" alors qu'avec Putty j'arrive à me connecter. Bizarre... A+ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 06 mars 2012 - 18:47 |
Bonjour,
De mon côté j'en suis toujours au même point. L'appel de la fonction "Connexion" semble bien se passer (la fonction retourne 0, ce qui indique que la connexion est établie). Par contre, je n'arrive pas à utiliser la fonction suivante "SendRcvData", j'ai une erreur Windev... |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 mars 2012 - 17:24 |
Bonjour Julien... Ci-joint la fonction d'envoie de commande qui fonctionne parfaitement... le retour de la commande se trouve dans la fonction 'callback" que tu as définit dans la connexion SSH.
Bon développement... Olivier BOHER www.xenon33.fr |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 mars 2012 - 18:07 |
Bonjour,
La connexion (où tu définis la fonction callback) :
nResultat est un entier
nResultat = AppelDLL32("ExtraPuTTY", "Connexion", "192.168.1.88", &gnIDConnexion, "root", "root", False, 1, 22, 0, &CallBackRcvData, 0) SI nResultat <> 0 ALORS
RETOUR FIN
L'envoie de la commande :
sTamponReception est une chaîne sur 10000 nResultat est un entier
sTamponReception = Répète(Null, 10000)
nResultat = AppelDLL32("ExtraPuTTY", "SendRcvData_O", nIDConnexion, &sCommande, "", "", 5000, &sTamponReception, 10000, 0) SI nResultat <> 0 ALORS
FIN
La fonction callback (que tu as définit lors de la connexion) :
Procedure CallBackRcvData(ConnectionID est un entier, Buff est un chaîne, Size est un entier, ConnectionStatus est un entier)
VbBuf est une chaîne ASCIIZ sur 10000
SI (Size > 0) ET (ConnectionStatus = 0) ALORS VbBuf = Complete(Size + 5, Null) API("kernel32", "RtlMoveMemory", &VbBuf, Buff, Size) Trace(VbBuf) SINON SI (ConnectionStatus <> 0) ALORS Erreur("Connection closed by remote host") FIN
RENVOYER 0
Voilà tu as toutes les pièces du puzzle !!! çà marche impec !
Bon développement... Olivier BOHER http://www.xenon33.fr/ |
| |
| |
| | | |
|
| | |
| |
| Posté le 07 mars 2012 - 18:48 |
Bonjour Julien, Tu as la réponse à ta question au dessus !!! j'ai fait un copier/coller du code. Bon développement... Olivier BOHER http://www.xenon33.fr/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 07 mars 2012 - 18:49 |
Bonjour Olivier,
Merci beaucoup de ton retour, je pense que cela va bien m'aider 
Juste une petite précision, faut-il définir la fonction 'callback' nommée CallBackRcvData et si oui comment ?
J'avoue que je ne maitrise pas trop ce concept de fonction callback...
Merci. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
| Posté le 08 mars 2012 - 10:12 |
Merci beaucoup Olivier, avec ton exemple cela devrait rouler 
C'est bizarre, mes messages arrivent sur le forum 1h après que je les poste...
Bonne journée. |
| |
| |
| | | |
|
| | |
| |
| Posté le 23 mars 2012 - 20:40 |
Sinon le plus simple c'est de regarder les examples, dispo sur le site. Il y a des examples n VB,VB.net,C# et MFc.
@+ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 messages |
|
| Posté le 20 juin 2012 - 13:06 |
| bonjour, SVP comment utiliser SSH avec windev15 (j ai aucun idée sur SSH)? |
| |
| |
| | | |
|
| | | | |
| | |
|