Я пытаюсь создать SSH-клиент, используя С#. Я использую библиотеку Renci.SshNet. У меня возникают проблемы с отправкой команды и получением соответствующего ответа от сервера.
То, как я его тестировал, - это передать команду ls, а затем команду cd.., а затем команду ls еще раз - посмотреть, выполняется ли команда cd... Однако нет никакой разницы между первой командой ls и второй командой ls. Я не совсем уверен, что я делаю неправильно. Возможно, я использую неправильный тип Ssh. Я предоставил код и вывод, который я получаю. Я также добавил результат, который я ожидаю.
SshClient ssh = new SshClient("apk0rhel01", "dwaseem", "Da_011235813");
ssh.Connect();
while (true)
{
string command = Console.ReadLine();
if (command == "exit")
{
break;
}
var result = ssh.RunCommand(command);
if (result.Result.Length < 10)
continue;
Console.Write(result.Result);
}
ssh.Disconnect();
Выход:
Ожидаемый результат:
Ответ на этот вопрос тот же, что и вопрос для вашего вопроса, используя библиотеку Tamir SSH - вы используете класс, предназначенный для выполнения отдельных команд, который регистрируется и выполняет команду каждый раз. Вы не сможете использовать это как оболочку.
Если вы хотите реализовать интерактивные команды, вам понадобится что-то, что держит соединение открытым, и вам нужно будет заниматься разработкой, когда команда закончится (что обычно делается путем поиска шаблона подсказки). Класс Shell предоставляет методы для решения этого вопроса - вы можете найти примеры его использования на своем веб-сайте.