SshNet命令执行

时间:2015-04-01 18:07:40

标签: c# linux ssh

我正在尝试使用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();

输出: enter image description here

预期产出: enter image description here

1 个答案:

答案 0 :(得分:2)

对此问题的答案与使用Tamir SSH库的问题相同 - 您使用的是用于执行单个命令的类,每次登录并执行命令。您将无法像使用shell一样使用它。

如果要实现交互式命令,则需要保持连接打开的东西,并且需要在命令完成时处理(通常通过查找提示模式来完成)。 Shell类提供了处理它的方法 - 您可以找到它的使用示例on their website