2016-06-30 23 views
8

Łączę się z serwerem Linux z mojej aplikacji .net przy użyciu SSH.NET. Każda wykonywana przeze mnie komenda kończy się zgodnie z oczekiwaniami, z wyjątkiem pbrun su - myaccount.. NET SSH pbrun su

Podczas debugowania, po wykonaniu polecenia pbrun su - myaccount, strzałka w debugerze znika, a kontrola nigdy nie jest zwracana do visual studio, co wymaga ręcznego zatrzymania debugowania aplikacji.

+0

komendę 'su' jest prawdopodobnie czekając na hasło. Jeśli patrzysz na standardowe wyjście, nie zobaczysz tego, ponieważ zapytanie 'Password:' zostanie wysłane na stderr. W [this] (http://stackoverflow.com/questions/30079526/how-to-write-to-stdin-read-from-stdout-of-an-ssh-connected-remote-process-renc#36360010) post możesz se, aby napisać do powłoki stdin. – AxelWass

+0

@AxelWass Dlaczego miałby oczekiwać hasła, jeśli nie jest monitowany lub wymagany podczas uruchamiania tego samego polecenia pbrun su w terminalu? – HendPro12

+0

Zgaduję, ale może użytkownik ssh i użytkownik lokalny nie są tacy sami? Może użycie 'sudo visudo' pomaga jako [tutaj] (http://askubuntu.com/questions/470383/how-to-avoid-prompt-password-for-sudo#470466). – AxelWass

Odpowiedz

1

Jeśli problem polega na tym, że pbrun prosi o coś na stdin (hasło, powód, itp.), Możesz utworzyć powłokę ze sterowanymi przez ciebie strumieniami i napisać w niej.

Prosty przykład:

using System; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var connectionInfo = new Renci.SshNet.PasswordConnectionInfo("ancardia.us.to", "adom", "adom"); 
      var ssh = new Renci.SshNet.SshClient(connectionInfo); 

      ssh.Connect(); 

      var shell = ssh.CreateShell(Console.OpenStandardInput(), Console.OpenStandardOutput(), Console.OpenStandardOutput()); 
      shell.Start(); 

     while (true) { 
      Console.Read(); 
      } 

     } 


    } 
} 

enter image description here

+0

Użyłem twojego przykładu z danymi mojego serwera i pokazuje on terminal zdalny w konsoli. Jednak, jak wyjaśniono wcześniej, po uruchomieniu narzędzia pbrun su - myaccount, użytkownik z powodzeniem zmienia użytkownika i nie jest wymagane żadne hasło, – HendPro12