SSH en .NET

Le
Alex
Bonjour,

Je cherche à intégrer SSH dans Windev via une DLL .NET.

J'aimerais éviter de lancer un fichier BAT, et ExtraPutty ne me satisfait=
pas (fonctionne mais pas toujours, plantages aléatoires, etc )

Suite à cet échange ici :
http://forum.pcsoft.fr/thread.awp?groupid=pcsoft.fr.windev&postid=27579=
4&cur=275794&v=2

J'ai trouvé :
-SharpSSH : http://www.tamirgal.com/blog/page/SharpSSH.aspx
-SSH.NET : http://sshnet.codeplex.com/

Visiblement SSH.NET serait le successeur de SharpSSH.

Il a l'air bien documenté et vous pouvez télécharger l'aide SshClient=
.chm ici :
http://sshnet.codeplex.com/documentation

Malheureusement je ne maitrise pas .NET dans Windev.
Donc pourriez vous aider à faire un exemple qui fonctionne?

Ce que j'ai fait :
-téléchargé le binaire .NET 4.0 (dll déjà compilée) ici : http:=
//sshnet.codeplex.com/releases/view/83611
-importé dans Windev via Clic Droit > Assemblage > Importer > choisir le =
fichier binaire : Renci.SshNet.dll

A ce stade on trouve des classes de la DLL et on suit la doc en ligne ou le=
fichier SshClient.chm qui contient des exemples de code .NET, VB et C++

J'ai essayé de faire ça :

sRes est une chaîne
oClient est un SshClient("ip de mon serveur ssh","login","password")
oClient:Connect()
SI oClient:IsConnected ALORS
sRes = oClient:RunCommand("ls -l")
Trace(sRes)
oClient:Disconnect()
FIN

Donc ça plante avec des erreurs .NET, etc

J'ai testé mon serveur ssh avec un simple client, et j'arrive à me conn=
ecter et envoyer des commandes avec ExtraPutty. J'aimerais bien y arriver a=
vec cette DLL DotNet.

Quelqu'un habitué à .NET dans Windev pourrait-il aider?

Cordialement,

Alex
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alex
Le #24695962
Pour info le code d'erreur :

--------------------------------------------------------------------------- ----
Erreur à la ligne 5 du traitement Clic sur BTN_Test.
L'invocation de la méthode <Connect()> du type <Void> a échoué

----- Informations techniques -----

Projet : viSsh

Appel WL :
Traitement de 'Clic sur BTN_Test' (FEN_Putty.BTN_Test), ligne 5, thread 0

Que s'est-il passé ?
L'invocation de la méthode <Connect()> du type <Void> a échoué

Code erreur : 200002
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd170net4.dll' (17.0.35.0).
Identifiant des informations détaillées (.err) : 200002
Informations supplémentaires :
EIT_PILEWL :
Clic sur BTN_Test (FEN_Putty.BTN_Test), ligne 5
EIT_DATEHEURE : 10/08/2012 21:48:57

----- Sous-erreur n°1 -----

Que s'est-il passé ?
Le framework .NET a renvoyé l'erreur suivante :
System.Reflection.TargetInvocationException: Une exception a été levé e par la cible d'un appel. ---> Renci.SshNet.Common.SshAuthenticationExcept ion: No suitable authentication method found to complete authentication.
à Renci.SshNet.ConnectionInfo.Authenticate(Session session)
à Renci.SshNet.Session.Connect()
à Renci.SshNet.BaseClient.Connect()
--- Fin de la trace de la pile d'exception interne ---
à System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo meth od, Object target, Object[] arguments, SignatureStruct& sig, MethodAttribut es methodAttributes, RuntimeType typeOwner)
à System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo metho d, Object target, Object[] arguments, Signature sig, MethodAttributes metho dAttributes, RuntimeType typeOwner)
à System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolea n skipVisibilityChecks)
à System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
à CDotNetMethod.bInvoke(Char* pszTypeName, Char* pszMethodName, Char* pszParameters, MethodInfo gcMethod, Object gcObj, CSLevel* pclPile, Int32 n NbParamPile, Int32 bValeurRetour, STOperationDotNet* pstOperation)

Code erreur : 200007
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd170net4.dll' (17.0.35.0).
Identifiant des informations détaillées (.err) : 200007
Alex
Le #24696042
Autre essai, autre erreur :

sRes, sErr, sExit, sTrace est une chaîne
oClient est un SshClient("ip",22,"login","password")
oCommande est un SshCommand = oClient.CreateCommand("who")

oCommande.CommandTimeout = TimeSpan.FromSeconds(10)

sRes = oCommande.Exécute()
sErr = oCommande.Error
sExit = oCommande.ExitStatus

sTrace = (sErr<>"") ? sErr SINON sRes
Trace(sTrace)

oClient.Disconnect()

--------------------------------------------------------------------------- -
Erreur à la ligne 4 du traitement Clic sur BTN_Test.
Impossible de construire l'objet de type <SshCommand>
L'invocation de la méthode
----- Informations techniques -----

Projet : viSSH

Appel WL :
Traitement de 'Clic sur BTN_Test' (FEN_Putty.BTN_Test), ligne 4, thread 0

Que s'est-il passé ?
Impossible de construire l'objet de type <SshCommand>
L'invocation de la méthode
Code erreur : 200002
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd170net4.dll' (17.0.35.0).
Identifiant des informations détaillées (.err) : 200002
Informations supplémentaires :
EIT_PILEWL :
Clic sur BTN_Test (FEN_Putty.BTN_Test), ligne 4
EIT_DATEHEURE : 10/08/2012 23:34:05

Assistance
phig
Le #24710652
Le 10/08/2012 23:34, Alex a écrit :
Autre essai, autre erreur :

sRes, sErr, sExit, sTrace est une chaîne
oClient est un SshClient("ip",22,"login","password")
oCommande est un SshCommand = oClient.CreateCommand("who")

oCommande.CommandTimeout = TimeSpan.FromSeconds(10)

sRes = oCommande.Exécute()
sErr = oCommande.Error
sExit = oCommande.ExitStatus

sTrace = (sErr<>"") ? sErr SINON sRes
Trace(sTrace)

oClient.Disconnect()

----------------------------------------------------------------------------
Erreur à la ligne 4 du traitement Clic sur BTN_Test.
Impossible de construire l'objet de type <SshCommand>
L'invocation de la méthode
----- Informations techniques -----

Projet : viSSH

Appel WL :
Traitement de 'Clic sur BTN_Test' (FEN_Putty.BTN_Test), ligne 4, thread 0

Que s'est-il passé ?
Impossible de construire l'objet de type <SshCommand>
L'invocation de la méthode
Code erreur : 200002
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd170net4.dll' (17.0.35.0).
Identifiant des informations détaillées (.err) : 200002
Informations supplémentaires :
EIT_PILEWL :
Clic sur BTN_Test (FEN_Putty.BTN_Test), ligne 4
EIT_DATEHEURE : 10/08/2012 23:34:05

Assistance





salut.
j'en suis au même niveau que toi en partant de zero, framwork 3.5 ( le 4
veut pas fonctionner sur mon vieux xp32

en fait, en déclarant Ocommande est un SshCommand dynamique, cela
fonctionne.

je continue à creuser de mon coté...

Cordialemet,
Alex
Le #24711262
Bonjour,

en fait, en déclarant Ocommande est un SshCommand dynamique, cela
fonctionne.



Tu arrives a exécuter la commande sans erreur et a récupérer un rés ultat ?

Cordialement,

Alex
Alex
Le #24711302
Merci, pour l'info, en effet ça marche.
J'ai testé la connexion vers un iPad en Wifi.
Le code qui suit écrit la liste des dossiers/fichiers dans la trace.

-------------------------------------------------------------
sRes, sErr, sExit, sTrace est une chaîne
sServeur, sUser, sPwd, sCmd sont des chaînes
oCmd est un SshCommand dynamique

sCmd = "ls -l"
sServeur = "10.11.121.114"
sUser = "root"
sPwd = "monpass"

oCx est un PasswordConnectionInfo(sServeur, sUser, sPwd)
oCli est un SshClient(oCx)

oCli.Connect()
oCmd = oCli.RunCommand(sCmd)

sRes = oCmd.Result
sErr = oCmd.Error
sExit = oCmd.ExitStatus

sTrace = (sErr<>"") ? sErr SINON sRes
Trace(sTrace)

oCli.Disconnect()

-------------------------------------------------------------
Résultat trace :
total 0
drwxr-xr-x 11 root wheel 374 Aug 3 16:39 Library
drwxr-xr-x 2 root wheel 68 Feb 27 2008 Media
-rw-r--r-- 1 root wheel 0 Aug 4 05:07 test.html
-------------------------------------------------------------

J'ai également utilisé la DLL Renci.SshNet.dll (DotNet 3.5).

Cordialement,

Alex
phig
Le #24711922
Le 21/08/2012 10:01, Alex a écrit :
Merci, pour l'info, en effet ça marche.
J'ai testé la connexion vers un iPad en Wifi.
Le code qui suit écrit la liste des dossiers/fichiers dans la trace.

-------------------------------------------------------------
sRes, sErr, sExit, sTrace est une chaîne
sServeur, sUser, sPwd, sCmd sont des chaînes
oCmd est un SshCommand dynamique

sCmd = "ls -l"
sServeur = "10.11.121.114"
sUser = "root"
sPwd = "monpass"

oCx est un PasswordConnectionInfo(sServeur, sUser, sPwd)
oCli est un SshClient(oCx)

oCli.Connect()
oCmd = oCli.RunCommand(sCmd)

sRes = oCmd.Result
sErr = oCmd.Error
sExit = oCmd.ExitStatus

sTrace = (sErr<>"") ? sErr SINON sRes
Trace(sTrace)

oCli.Disconnect()

-------------------------------------------------------------
Résultat trace :
total 0
drwxr-xr-x 11 root wheel 374 Aug 3 16:39 Library
drwxr-xr-x 2 root wheel 68 Feb 27 2008 Media
-rw-r--r-- 1 root wheel 0 Aug 4 05:07 test.html
-------------------------------------------------------------

J'ai également utilisé la DLL Renci.SshNet.dll (DotNet 3.5).

Cordialement,

Alex




pareil!
je passe au sftp asynchrone :)
Publicité
Poster une réponse
Anonyme