2016-06-30 43 views
8

SSH.NET kullanarak .net uygulamasından bir linux sunucusuna bağlanıyorum. Çalıştığım her komut, pbrun su - myaccount istisnasıyla beklendiği gibi tamamlanır..NET SSH pbrun su

Hata ayıklama sırasında, pbrun su - myaccount komutu yürütüldüğünde, hata ayıklayıcısındaki ok kaybolur ve denetim görsel stüdyoya hiçbir zaman geri dönmez, bu nedenle uygulamayı hata ayıklamayı elimden kaldırmamı gerektirir.

+0

'Su' komut muhtemelen bir şifre bekliyor. Eğer stdout'a bakıyorsanız bunu görmeyeceksiniz, çünkü 'Şifre:' istemi stderr'e gönderilir. [Bu] içinde (http://stackoverflow.com/questions/30079526/how-to-write-to-stdin-read-from-stdout-of-an-ssh-connected-remote-process-renc#36360010) gönderi kabuk stdin'e yazabilirsin. – AxelWass

+0

@AxelWass Terminalde aynı pbrun su komutunu çalıştırırken istenmediğinde veya istenmediğinde neden şifre beklenir? – HendPro12

+0

Burada tahmin ediyorum, ama belki de ssh kullanıcısı ve yerel kullanıcı aynı değil mi? Belki de 'sudo visudo' kullanarak [burada] olarak yardımcı olur (http://askubuntu.com/questions/470383/how-to-avoid-prompt-password-for-sudo#470466). – AxelWass

cevap

1

Sorun, pbrun'un stdin'de (şifre, neden vb.) Bir şey sormasıysa, sizin tarafınızdan kontrol edilen akışlara sahip bir kabuk oluşturabilir ve yazabilirsiniz.

Basit bir örnek:

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

Örneğinizi sunucu bilgilerimle kullandım ve konsoldaki uzak uçbirimi gösterir. Ancak, daha önce açıklandığı gibi, pbrun su - myaccount'u çalıştırdığımda, kullanıcı başarıyla değiştirir ve şifre gerekmez. – HendPro12