在Unix上,您有類似Expect
和Empty
的工具,用於使用僞終端與終端應用程序(如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
?
你是否絕對需要通過密碼進行身份驗證?使用公共密鑰認證可能不太成問題 –
我同意它不會有問題,我們可以設置無密碼會話,但這是它的方式 - 必須通過代碼支持usrname/pwd交互。 –
你沒有使用純淨的.NET sftp客戶端(包括所有認證選項等)的原因? – Yahia