我正在尝试使用C#创建SSH客户端。我正在使用Renci.SshNet库。我在发送命令并从服务器获得适当的响应时遇到问题。
我测试它的方法是通过发送ls命令,然后发送cd ..命令,然后再发送ls命令 - 查看cd ..命令是否正确执行。但是,first 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();
输出:
预期产出:
答案 0 :(得分:2)
对此问题的答案与使用Tamir SSH库的问题相同 - 您使用的是用于执行单个命令的类,每次登录并执行命令。您将无法像使用shell一样使用它。
如果要实现交互式命令,则需要保持连接打开的东西,并且需要在命令完成时处理(通常通过查找提示模式来完成)。 Shell类提供了处理它的方法 - 您可以找到它的使用示例on their website。