- Plein de la sortie de commande de ShellStream de C# SSH.NET

À l'aide de Renci.SshNet de la bibliothèque. Je suis en train d'exécuter certaines commandes.
Après l'exécution de la commande "1", je suis de l'exécution de la commande "2", qui prend plus de temps.

Je ne suis que de l'obtention de la première ligne de la sortie. (reader.ReadToEnd() ne fonctionne pas de manière adéquate).

J'ai aussi essayé while (!reader.EndOfStream){ } avec pas de chance.

Je pense que c'est parce que le retard de la réponse du serveur. Quand il n'y a pas de réponse, le flux de rien lu et finitions.

J'ai trouvé une solution

String tmp;
TimeSpan timeout = new TimeSpan(0, 0, 3);
while ((tmp = s.ReadLine()) != null)
{
    Console.WriteLine(tmp);
}

Mais ce n'est pas professionnel. J'ai besoin d'une certaine manière dans laquelle le flux se termine quand il se termine.

using (var vclient = new SshClient("host", "username", "password"))
{
    vclient.Connect();
    using (ShellStream shell = vclient.CreateShellStream("dumb", 80, 24, 800, 600, 1024))
    {
        Console.WriteLine(SendCommand("comand 1", shell));
        Console.WriteLine(SendCommand("comand 2", shell));
        shell.Close();
    }
    vclient.Disconnect();
}

public static string SendCommand(string cmd, ShellStream sh)
{
    StreamReader reader = null;
    try
    {
        reader = new StreamReader(sh);
        StreamWriter writer = new StreamWriter(sh);
        writer.AutoFlush = true;
        writer.WriteLine(cmd);
        while (sh.Length == 0)
        {
            Thread.Sleep(500);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("exception: " + ex.ToString());
    }
    return reader.ReadToEnd();
}               
InformationsquelleAutor T4mer | 2015-12-10