Невозможно выполнить команду с S SH. NET на WLC Cisco - PullRequest
1 голос
/ 18 февраля 2020

Попытка использовать S SH. NET для подключения к беспроводному контроллеру Cisco и добавления к нему адреса ma c. Когда я отлаживаю свой код, я получаю true на свойстве IsConnected клиента, но когда я захожу на сам контроллер и выполняю «Показать вход в систему», я не вижу предполагаемого соединения в списке.

Кроме того, когда я добираюсь до var result = client.RunCommand(comman.ToString()).Result; код просто зависает без ответа вообще. Оставлено на несколько минут и не вызывает таймаут или не возвращает ошибку любого типа.

Изображение сеанса PuTTY при выполнении выше строки enter image description here

public WebAPIEndPoint Put(WebAPIEndPoint console)
{
    var auth = new PasswordAuthenticationMethod("UserName", "Password");
    var connectionInfo = new ConnectionInfo(hostIP, 22, "UserName", auth);

    using (var client = new SshClient(connectionInfo))
    {
        client.Connect();

        var command =
            client.CreateCommand("config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234");

        var result = client.RunCommand(comman.ToString()).Result;

        Console.WriteLine(result);

        client.Disconnect();

        return console;
    }
}

1 Ответ

1 голос
/ 20 февраля 2020

Ваш сервер не поддерживает канал S SH "exe c". Таким образом, вы не можете использовать CreateCommand / RunCommand.

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

ShellStream shellStream = client.CreateShellStream(string.Empty, 0, 0, 0, 0, 0);
shellStream.Write("username\n");
shellStream.Write("password\n");
shellStream.Write("config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234\n");
...