2015-04-01 163 views
1

我正在尝试使用C#创建一个SSH客户端。我正在使用Renci.SshNet库。我有问题发送命令并从服务器获得适当的响应。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(); 

输出: enter image description here

预期输出: enter image description here

回答

1

这个问题的答案是一样的一个使用塔米尔文库中你的问题 - 你正在使用用于一类执行单个命令,每次登录并执行命令。你将无法像使用shell一样使用它。

如果你想实现交互式命令,你需要一些能够保持连接打开的东西,并且你需要处理一个命令何时完成(这通常是通过查找提示模式来完成的) 。 Shell类提供了处理这个问题的方法 - 你可以找到它的使用例子on their website

+0

理查德,谢谢你帮助我。我试图使用Shell类,但我遇到了一些问题。我发布了另一个问题: http://stackoverflow.com/q/29414343/2970916 – user2970916 2015-04-02 13:36:09