Ich möchte Befehl ausführen und das Ergebnis auf Remote-Computer, der Linux-Betriebssystem hat. Ich verwende ssh .net-Bibliothek, um mit C# -Code zu verbinden. Ich kann verbinden und einige Befehle ausführen, die es nicht benötigt, "sudo" vorher zu verwenden. aber ich weiß nicht, wie man Befehle ausführt, die von sudo ausgeführt werden müssen, denn nach dem Ausführen - zum Beispiel - "sudo iptables -L-n" sollte ich ein Passwort eingeben und ich weiß nicht, wie ich das Passwort eingeben soll, nachdem ich das ausgeführt habe Befehl.So führen Sie Befehle von Sudo und geben Sie ein Passwort von ssh .net C#
Dies ist mein Code:
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);
}
, wenn diese Funktion laufen, ich erfolgreich auf Remote-PC verbinden kann, output1 richtigen Wert hat, aber output2 und output3 ist leer. Tatsächlich ist es offensichtlich, dass nach dem Sudo-Befehl ein Passwort eingegeben werden muss. Ich habe die meisten Fragen über ssh .net gelesen. Eine ähnliche Frage ist unbeantwortet geblieben.
SSH .NET : freeze upon sudo su - user2 (er oder sie knapp über das Passwort kennen, aber ich weiß, ich weiß nicht, wie es über den Code eingeben)
How to su with SSH.Net? (I verwendeten Shell-Methode erstellen, aber ich konnte nicht verstehen, was für und wie Diese Frage habe ich "Last login: ..." Ausgabe.)
Was ist 'SshCommandLineRunner'? Ist es Teil der SSH.NET-Bibliothek? Der normale Weg wäre 'CreateShellStream' um einen Stream zu erhalten und die Expect und Write Methode des Streams zu verwenden. –