2016-06-30 4 views
8

Я подключаюсь к серверу linux из своего .net-приложения с использованием SSH.NET. Каждая команда, которую я выполняю, выполняется, как ожидалось, за исключением pbrun su - myaccount..NET SSH pbrun su

Во время отладки, когда выполняется команда pbrun su - myaccount, стрелка в отладчике исчезает, и управление никогда не возвращается в визуальную студию, поэтому мне нужно вручную остановить отладку приложения.

+0

Параметр 'su' команда, вероятно, ждет пароль. Если вы смотрите на stdout, вы не увидите этого, потому что приглашение 'Password:' отправляется в stderr. В [this] (http://stackoverflow.com/questions/30079526/how-to-write-to-stdin-read-from-stdout-of-an-ssh-connected-remote-process-renc#36360010) post вы можете писать в shell stdin. – AxelWass

+0

@AxelWass Почему он должен ожидать пароль, если не запрашивается или требуется при выполнении той же команды pbrun su в терминале? – HendPro12

+0

Я угадываю здесь, но, может быть, пользователь ssh и локальный пользователь не совпадают? Возможно, использование 'sudo visudo' помогает [здесь] (http://askubuntu.com/questions/470383/how-to-avoid-prompt-password-for-sudo#470466). – AxelWass

ответ

1

Если проблема в том, что pbrun запрашивает что-то в stdin (пароль, причина и т. Д.), Вы можете создать оболочку с контролируемыми вами потоками и написать в ней.

Простой пример:

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

Я использовал ваш пример с данными моего сервера, и он показывает удаленный терминал в консоли. Однако, как объяснялось ранее, когда я выполняю su-myaccount pbrun, он меняет пользователя успешно и пароль не требуется, – HendPro12

Смежные вопросы