2015-04-01 227 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