2011-08-19 77 views
1

在Unix上,您有類似ExpectEmpty的工具,用於使用僞終端與終端應用程序(如sftp)交互。我有一臺安裝了cygwin的Windows機器,我的C#應用程序需要啓動一個sftp會話來將一些文件傳輸到遠程機器。在Windows上與應用程序交互sftp(cygwin)

我開始與一些像這樣的代碼

var p = new Process(); 

p.StartInfo = new ProcessStartInfo 
{ 
    FileName = "sftp", 
    UseShellExecute = false, 
    CreateNoWindow = false, 
    RedirectStandardInput = true, 
    Arguments = username + "@" + server 
}; 

p.Start(); 
p.StandardInput.WriteLine(password); 

的問題是,sftp將不會從stdin只有從終端讀取密碼。這就是Expect進來的地方。除了在cygwin中安裝Expect之外,還有什麼辦法可以從C#程序交互地發送密碼到sftp

+0

你是否絕對需要通過密碼進行身份驗證?使用公共密鑰認證可能不太成問題 –

+0

我同意它不會有問題,我們可以設置無密碼會話,但這是它的方式 - 必須通過代碼支持usrname/pwd交互。 –

+1

你沒有使用純淨的.NET sftp客戶端(包括所有認證選項等)的原因? – Yahia

回答

0

Cygwin有packages for tons of common UNIX utilities,包括expect和(可能)是空的。理論上你仍然可以使用這些...(不是說這將是最安全,緊湊或理想的選擇......但它是一種選擇!)

+0

乾杯,我確實說過「在Cygwin中安裝Expect之外」,但如果沒有其他選擇,這可能是我們最終走向的方式。 –

+0

對......我需要仔細閱讀! :d – ewall

相關問題