Я хочу запустить команду и получить результат на удаленном компьютере с операционной системой Linux. Я использую библиотеку ssh .net для подключения по C# -коду. Я могу подключить и запустить некоторые команды, которые не нужно использовать «sudo». но я не знаю, как выполнять команды, которые должны выполняться sudo, потому что после запуска -for instance- «sudo iptables -L -n» я должен ввести пароль, и я не знаю, как ввести пароль после выполнения этого команда.Как запустить команды sudo и ввести пароль по ssh .net C#
Это мой код:
private void connectingToLinuxHost(string ip, string username, string password, int port)
{
SshCommandLineRunner ssh = new SshCommandLineRunner(ip, username, password, port);
ssh.Connect();
string output1 = ssh.ExecuteCommand("ls");
ssh.ExecuteCommand("sudo iptables -L -n");
Thread.Sleep(1000);
string output2 = ssh.ExecuteCommand(password);
ssh.ExecuteCommand("sudo iptables -L -n \n");
Thread.Sleep(1000);
string output3 = ssh.ExecuteCommand(password);
}
, когда эта функция запуска, я могу подключиться к удаленному ПК успешно, output1 имеет правильное значение, но output2 и output3 пустуют. на самом деле очевидно, что после команды sudo необходимо ввести пароль. Я прочитал большинство вопросов о ssh .net. такой же вопрос остается без ответа.
SSH .NET : freeze upon sudo su - user2 (он или она не знает пароль, но я знаю, что я не знаю, как ввести его с помощью кода)
How to su with SSH.Net? (я использовал метод создания оболочки, но я не мог понять, что для и как этот вопрос я получил «Последний вход: ...».)
Что такое 'SshCommandLineRunner'? Является ли он частью библиотеки SSH.NET? Обычным способом будет «CreateShellStream» для получения потока и использования метода Expect и Write для потока. –