Тайм-аут на sshClient.RunCommand C # - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть код C #, который я выполняю на Visual Studio 2017. Моя цель - запустить несколько потоков параллельно и подключиться к различным IP-адресам через SSH, выполнить команду на этих устройствах и вернуть выходные данные на консоль.Пример подключения к одному такому устройству с IP: 192.168.46.126 выглядит следующим образом:

Thread myNewThread = new Thread(() => sendCommand("192.168.46.126", command));
myNewThread.Start();

Функция sendCommand выглядит следующим образом:

void sendCommand(string IPaddr, string command)
{
    using (var sshClient = new SshClient(IPaddr, username, password))
    {
        sshClient.Connect();
        sshClient.Runcommand(command); //Takes a lot of time to execute
    }
}

sshClient.runCommand (команда)выполнение занимает много времени.Мне нужно запустить все эти потоки параллельно, чтобы подключиться к каждому устройству и вывести их состояния на консоль.В случае, если поток занимает слишком много времени, мне нужно иметь опцию тайм-аута.Я искал в Интернете, но у них, похоже, нет опции тайм-аута в функции RunCommand.Похоже, что единственная опция тайм-аута связана с функцией connect (), реализованной с помощью следующего кода:

client.ConnectionInfo.Timeout = TimeSpan.FromSeconds(10);

Можно ли как-то реализовать тайм-аут для строки кода runCommand?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...