2016-06-30 31 views
8

Mi collego a un server Linux dalla mia applicazione .net utilizzando SSH.NET. Ogni comando che eseguo viene completato come previsto ad eccezione di pbrun su - myaccount..NET SSH pbrun su

Durante il debug, quando viene eseguito il comando pbrun su - myaccount, la freccia nel debugger scompare e il controllo non viene mai restituito a Visual Studio, richiedendomi quindi di interrompere manualmente il debug dell'applicazione.

+0

Il comando 'su' è probabilmente in attesa di una password. Se stai guardando lo stdout non lo vedrai, perché il prompt 'Password:' viene inviato a stderr. In [this] (http://stackoverflow.com/questions/30079526/how-to-write-to-stdin-read-from-stdout-of-an-ssh-connected-remote-process-renc#36360010) post puoi scrivere a shell stdin. – AxelWass

+0

@AxelWass Perché si aspetta una password se non viene richiesta o richiesta quando si esegue lo stesso comando pbrun su nel terminale? – HendPro12

+0

Sto indovinando qui, ma forse l'utente ssh e l'utente locale non sono gli stessi? Forse usare 'sudo visudo' aiuta come [qui] (http://askubuntu.com/questions/470383/how-to-avoid-prompt-password-for-sudo#470466). – AxelWass

risposta

1

Se il problema è che pbrun richiede qualcosa in stdin (password, ragione, ecc.) È possibile creare una shell con flussi controllati dall'utente e scrivere in essa.

semplice esempio:

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

Ho usato il tuo esempio con i dettagli del mio server e mostra il terminale remoto nella console. Tuttavia, come spiegato prima, quando eseguo il pbrun su - myaccount, cambia utente con successo e non è richiesta alcuna password, – HendPro12