C # отправить Ctrl + Y через SSH.NET - PullRequest
0 голосов
/ 12 октября 2018

В настоящее время я использую SSH.net и пытаюсь подключиться к коммутатору Avaya.

Мой код выглядит так:

using (var client = new SshClient(ip, username, password))
{
    client.Connect();
    //Sending CTRL+Y 
    SshCommand x = client.RunCommand("enable");
    client.Disconnect();
}

Я еще не нашел решение.

Есть ли какой-нибудь обходной путь или команда, которую я мог бы использовать для отправки моего CTRL + Y ?

1 Ответ

0 голосов
/ 12 октября 2018

SSH.NET не поддерживает отправку ввода для команд, выполняемых с SshClient.RunCommand (канал "exec").

Вы должны использовать канал "shell" (SshClient.CreateShell* 1006).* или SshClient.CreateShellStream).Обычно это не рекомендуется для автоматизации команд.Тем более с SSH.NET, который даже не позволяет отключить псевдотерминал для канала «shell».Это приносит много неприятных побочных эффектов, особенно с «умными» оболочками в Linux.Но с такими устройствами, как переключатели, это может быть терпимо.

Также, в частности, отправка управляющих последовательностей, таких как Ctrl + Y , более сложна для псевдотерминала.Но опять же, будем надеяться, что «оболочка» коммутатора достаточно глупа, чтобы просто принять чистый ASCII-код для Ctrl + Y , что составляет 25 = x19.

ShellStream shellStream = client.CreateShellStream(string.Empty, 0, 0, 0, 0, 0);
shellStream.Write("enable\n");
shellStream.Write("\u19");

while (true)
{
    string s = shellStream.Read();
    Console.Write(s);
}
...