2010-10-24 21 views
0

Je possède ce code:SharpSSH - SSHExec, lancez la commande, et attendez 5 secondes pour les données!

using System; 
using System.Text; 
using Tamir.SharpSsh; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      SshExec exec = new SshExec("192.168.0.1", "admin", "haha"); 
      exec.Connect(); 
      string output = exec.RunCommand("interface wireless scan wlan1 duration=5"); 
      Console.WriteLine(output); 
      exec.Close(); 
     } 
    } 
} 

La commande exécutera! Je peux voir ça, mais! Il imprime immédiatement des données. Ou en fait, il n'imprime pas les données de la commande. Il imprime comme le ... logo pour le mikrotik os. J'ai vraiment besoin des données de la commande, et j'ai besoin de SharpSSH pour attendre au moins 5 secondes pour les données, puis me les donner ... Quelqu'un sait comment je peux faire ça?

Je suis assez nouveau pour ça! J'apprécie toute l'aide! Je vous remercie!

+0

Je ne suis pas familier avec SharpSsh, mais il semble l'.RunCommand n'attend pas longtemps ... changer votre code ne sera pas utile, vous devez savoir s'il existe une commande Run différente. – TimothyP

Répondre

1

Vous voudrez peut-être essayer la surcharge suivante:

SshExec exec = new SshExec("192.168.0.1", "admin", "haha"); 
exec.Connect(); 
string stdOut = null; 
string stdError = null; 
exec.RunCommand("interface wireless scan wlan1 duration=5", ref stdOut, ref stdError); 

Console.WriteLine(stdOut); 
exec.Close(); 

Si leur API fait ce que son nom l'indique, il faut mettre la sortie standard de votre commande dans StdOut et l'erreur standard stderror.

Pour plus d'informations sur les flux standards, vérifier cela: http://en.wikipedia.org/wiki/Standard_streams