2010-03-12 4 views
3

Après-midi tout,SharpSSH se coince dans un flux infini lu dans l'application C# SSH

Je vais avoir un petit problème avec la bibliothèque SharpSSH pour .Net (voir http://www.tamirgal.com/blog/page/SharpSSH.aspx)

 SshStream ssh = new SshStream("some ip address", "some username", "some password"); 
     ssh.Prompt = "\n"; 
     ssh.RemoveTerminalEmulationCharacters = true;    

     ssh.Write("ssh some ip address"); 
     // Don't care about this response 
     ssh.ReadResponse(); 

     ssh.Write("lss /mnt/sata[1-4]"); 
     // Don't care about this response (for now) 
     ssh.ReadResponse(); 

     // while the stream can be read 
     while (ssh.CanRead) 
     { 
      Console.WriteLine(ssh.ReadResponse()); 
     } 

     ssh.Close(); 

Comme vous peut voir, c'est assez directement. Cependant, lorsque la boucle while est activée, elle ne sortira pas de la boucle lorsque tout a été imprimé sur la console et qu'il n'y a rien d'autre à lire.

Y at-il de toute façon je peux forcer manuellement à break quand il n'y a rien d'autre à lire?

Cheers, Ric

Répondre

4

ssh.CanRead indique que la mise en œuvre a pour flux de lecture, pas qu'il peut être lu.

0
while(true)                    
{                    
    //Write command to the SSH stream            
     ssh.Write("some command or execute a script on aix");      
     data = "";                 
     data = ssh.ReadResponse();             
     if (data.Length < 10)  //don't wnat response like $      
     continue;                 

     textWriter.Write(data); //write all of data to file on each response loop 

     if (data.Contains("EOF")) //was insert at end of file so I can terminate 
     break;                  

}                    
    textWriter.Close();                
ssh.Close(); //Close the connection            
}                     
+0

Bienvenue sur stackoverflow! S'il vous plaît ajouter une courte description à votre code ci-dessus pour améliorer la précision de la publication :) –