Это простейшая реализация sudo библиотеки SSH .Net, которую я могу найти. Однако я не могу заставить его работать.Команда Sudo в библиотеке C# SSH .Net
using (var ssh = new SshClient("hostname", "username", "password"))
{
ssh.Connect();
var input = new MemoryStream();
var sr = new StreamWriter(input);
var output = Console.OpenStandardOutput();
var shell = ssh.CreateShell(input, output, output);
shell.Stopped += delegate
{
Console.WriteLine("\nDisconnected...");
};
shell.Start();
sr.WriteLine("sudo ls");
sr.Flush();
Thread.Sleep(1000 * 1);
sr.WriteLine("password");
sr.Flush();
Thread.Sleep(1000 * 100);
shell.Stop();
}
Я получаю следующую ошибку каждый раз
Последнее посещение: Ср Янв 14 15:51:46 2015 от MYCOMPUTER
компании материал
SshNet.Logging Verbose: 1: ReceiveMessage с сервера: 'ChannelDataMessage': 'SSH_MSG_CHANNEL_DATA: # 0'. SshNet.Logging Verbose: 1: ReceiveMessage с сервера: 'ChannelDataMessage': 'SSH_MSG_CHANNEL_DATA: # 0'. [1; 36mThis является BASH [1; 31m4.1 [1; 36m- DISPLAY на [1; 31м: 0,0 [м
ср 14 января 2015 15:55:50 CST SshNet.Logging Многословный: 1: ReceiveMessage с сервера: 'ChannelDataMessage': 'SSH_MSG_CHANNEL_DATA: # 0'. SshNet.Logging Verbose: 1: ReceiveMessage с сервера: 'ChannelDataMessage': 'SSH_MSG_CHANNEL_DATA: # 0'. -bash: А ,: команда не найдена [0; 34musername @ хост [0; 31m [15:55:50]> [0м
Это размещена в случае, если кто-то работает в этом вопросе , Это очень простой пример того, как ожидание может использоваться с библиотекой ssh .net. Это действительно работает очень хорошо. Однако я не добавляю поддержку AIX или Solaris в ожидаемый. Кроме того, некоторые ежедневные сообщения сервера могут разорвать ожидание регулярного выражения. –
Спасибо за публикацию рабочего примера. Я не пробовал оригинальный код, но вы когда-нибудь выяснили, почему он не работает? – redspidermkv
Как вы знаете, когда команда завершила выполнение, если вы скажете, что вы выполняете ls -R /, это может занять довольно много времени, есть ли способ синхронизации на основе этого? –