2011-12-21 46 views
1

我必須在Windows機器上編寫一個應用程序(必須是windows,因爲機器正在執行其他windows-y操作),它可以通過ssh同時與兩個不同的Tandberg單元交互。觀看他們的控制檯日誌流並對特定事件做出反應。我需要在變量中存儲一些信息,並在這兩個不同的ssh會話中進行比較,或者我只是使用一些快速的securecrt腳本。從Windows計算機與SSH會話進行交互的最簡單方法?

我可以很容易地使用php(cli) - 它是我知道的一種語言,但顯然對於這個項目並不理想。我非常擅長通過計算新語言來破解我的方式,我想我可以在.net/c#中完成 - 是否有人有一個不花費數百美元的首選ssh .net庫?我願意接受任何其他建議來完成此項工作。

+0

http://stackoverflow.com/q/8516284/293712 – Maheep 2011-12-21 06:35:18

+0

http://stackoverflow.com/questions/530330/sftp-libraries-for-net – vittore 2011-12-21 06:36:42

回答

1

我已成功使用plink.exe向Linux發送命令,並從這些命令檢索到基於文本的結果。

以下是所有你想要的:

public string ExecuteCmd() 
    { 
     try 
     { 
      string strReturn = ""; 
      string param = ""; 
      StreamReader standerOut; 

      Process p = new Process(); 
      p.StartInfo.FileName = @"plink.exe"; 

      if (this.pass.Length == 0 || this.user.Length == 0 || this.host.Length == 0 || this.cmd.Length == 0) 
      { 
       throw new Exception("SSHClient: Invalid parameteres for SSHClient."); 
      } 

      param = "-ssh -pw " + this.pass + " " + this.user + "@" + this.host + " " + this.cmd; 

      string cd = Environment.CurrentDirectory; 

      if (File.Exists("plink.exe") == false) 
      { 
       throw new Exception("SSHClient: plink.exe not found. Make sure plink.exe is in the same folder as YOUR EXE."); 
      } 
      else 
      { 
       p.StartInfo.UseShellExecute = false; 
       p.StartInfo.RedirectStandardInput = true; 
       p.StartInfo.RedirectStandardOutput = true; 
       p.StartInfo.RedirectStandardError = true; 
       p.StartInfo.CreateNoWindow = true; 
       p.StartInfo.Arguments = param; 

       p.Start(); 
       standerOut = p.StandardOutput; 

       while (!p.HasExited) 
       { 
        if (!standerOut.EndOfStream) 
        { 
         strReturn += standerOut.ReadLine() + Environment.NewLine; 
         //textBox2.SelectionStart = textBox1.Text.Length; 
         //textBox2.ScrollToCaret(); 
        } 

        // Application.DoEvents(); 
       }      
      } 

      return strReturn; 
     } 
     catch (Exception exp) 
     { 
      throw new Exception("SSHClient:", exp); 
     } 
    } 
相關問題