Отправка последовательности Ctrl+break через Plink

Я пытаюсь автоматизировать команды оболочки удаленного сервера через Plink. И одна из вещей, которые я сделал, это команда grep.

Теперь предположим, что если в результате получается много данных, я просто хочу сломать команду.

Обычно из PuTTY вы просто нажимаете Ctrl-C или Ctrl-Break, и это прерывает команду.

Какая альтернатива Plink?


person techknackblogs    schedule 10.07.2019    source источник
comment
Просто прервать Plink?   -  person Martin Prikryl    schedule 10.07.2019


Ответы (1)


Не запускайте Plink из приложения C# для реализации SSH. Используйте нативную реализацию SSH для .NET, например SSH.NET. – Это даст вам полный контроль над соединением, и вам не придется использовать хаки, такие как отправка Ctrl+C.

var client = new SshClient("example.com", "username", "password");
client.Connect();

SshCommand command = client.CreateCommand("grep pattern file");
IAsyncResult result = command.BeginExecute();
using (var outputReader = new StreamReader(command.OutputStream))
using (var extendedReader = new StreamReader(command.ExtendedOutputStream))
{
    int read = 0;
    while (read < 10240)
    {
        string s;
        s = outputReader.ReadToEnd();
        read += s.Length;
        Console.Write(s);
        s = extendedReader.ReadToEnd();
        read += s.Length;
        Console.Write(s);
    }
}

command.CancelAsync();

Кроме того, вы можете использовать переключатель -m, чтобы остановить grep после определенного количества совпадений.

person Martin Prikryl    schedule 10.07.2019
comment
SSH.NET работает не во всех сценариях. Мы подключаемся к серверу по SSH через JumpHost, и кажется, что сделать это через SSH невозможно. Пожалуйста, дайте мне знать, есть ли способ сделать это через SSH.NET? - person techknackblogs; 15.07.2019
comment
Конечно, это возможно. См. раздел SSH с несколькими переходами через SSH.NET в C#. - person Martin Prikryl; 15.07.2019
comment
Я получаю сообщение об ошибке «Не найден подходящий метод аутентификации для завершения аутентификации (интерактивная клавиатура)». - person techknackblogs; 16.08.2019
comment
Я исправил вышеуказанную проблему, но получаю сообщение об ошибке при подключении по ssh к другому серверу. Ответ сервера не содержит идентификатор протокола SSH ssh.net - person techknackblogs; 16.08.2019
comment
Я считаю, что ответил на ваш первоначальный вопрос. Если у вас возникла новая проблема, задайте новый вопрос. - person Martin Prikryl; 17.08.2019