Невозможно получить вывод при отправке команд через ssh.net на коммутатор или виртуальный контроллер aruba - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь подключиться к виртуальному контроллеру для запуска команд aruba в консоли, таких как «show run» и т. Д., Но команды не выводятся. Похоже, что я могу успешно подключиться, и я не вижу никаких ошибок, но ничего не происходит при выполнении команды.

Я подключился через putty для проверки команд, а также проверки учетных данных. Я был в состоянии сделать аналогичную функциональность через Python, но мне нужно быть в состоянии сделать это через C # по причинам зависимости.

                var methods = new List<AuthenticationMethod>();
                methods.Add(new PasswordAuthenticationMethod(UserName, Password));
                var con = new ConnectionInfo(virtualController, 22, UserName, methods.ToArray());

                Console.WriteLine("Attempting Connection with Network...");
                var Client = new SshClient(con);
                Client.Connect();
                Console.WriteLine("Successfully Connected.");

                var cmdRun = Client.RunCommand(showClients);
                var result = cmdRun.Result;
                Console.WriteLine(result);

                cmdRun = Client.RunCommand(showRun);
                result = cmdRun.Result;
                Console.WriteLine(result);

                Client.Disconnect();

Консоль выводит «Успешно подключено». и продолжает выполнять весь код, но никогда не выводит ничего в строку:

Console.WriteLine (result);

Я ожидаю вывод терминала, который я вижу при запуске этой команды черезшпатлевка.

1 Ответ

0 голосов
/ 05 октября 2019

Я использую SSHClient вместо Client. Используя мой класс из этого ответа , вот пример кода после вызова Client.Connect():

SSHStream = SSHClient.CreateExtShellStream("dumb", 120, 80, 0, 0, 65536);
if (SSHStream != null) {
    DoCommand("no page");
    Connected = true;
}

var result = DoCommand("show cdp neighbors | begin Port", TimeSpan.FromSeconds(2), "#");

Вот вспомогательный метод:

public static IEnumerable<string> DoCommand(string c, TimeSpan? timeout = null, string prompt = "#") {
    return SSHStream.DoCommand(c, timeout ?? TimeSpan.FromSeconds(2), prompt);
}
...