2012-07-13 29 views
0

任何人都可以帮助我使用C#中的代码段将本地计算机上的文件传输到使用PSCP(PuTTY)传输方法的远程服务器上吗?我真的很感谢帮助。 谢谢C#中用于文件传输的PuTTY

+1

有很多用于.NET的SFTP客户端组件,包括免费的和商业的。为什么使用腻子? – 2012-07-13 14:36:57

+0

[SCP for C#]的可能重复(http://stackoverflow.com/questions/651399/scp-for-c-sharp) – 2012-07-13 14:46:41

回答

1

您可以使用支持SCP的库,如SSHNetWinSCP。两者都提供样本和测试来证明它们的工作方式。

随着SSH.Net您可以使用此代码(从测试文件)上传文件:

using (var scp = new ScpClient(host, username, password)) 
{ 
    scp.Connect(); 
    scp.Upload(new FileInfo(filename), Path.GetFileName(filename)); 
    scp.Disconnect(); 

}

随着WinSCP赋予库中的代码如下所示(从samples):

SessionOptions sessionOptions = new SessionOptions { 
      Protocol = Protocol.Sftp, 
      HostName = "example.com", 
      UserName = "user", 
      Password = "mypassword", 
      SshHostKey = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" 
}; 

using (Session session = new Session()) 
{ 
    // Connect 
    session.Open(sessionOptions); 

    // Upload files 
    TransferOptions transferOptions = new TransferOptions(); 
    transferOptions.TransferMode = TransferMode.Binary; 

    TransferOperationResult transferResult; 
    transferResult = session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions); 

    // Throw on any error 
    transferResult.Check(); 

} 
+0

感谢您的回复。我仍然对我的需求感到困惑。客户要求他们需要使用PuTTY SCP技术传输文件。我不知道这与其他SCP技术有什么不同。您能否或其他人请告诉我或解释在这种情况下应该怎么做?我赞赏你的回复。谢谢。 – Suresh 2012-07-16 14:04:04

0

使用SFTPSCP与.NET库支持的客户端可能是最好的选择。但这里有一个简单的使用方法:PSCP

Process cmd = new Process(); 
cmd.StartInfo.FileName = @"C:\PuTTY\pscp.exe"; 
cmd.StartInfo.UseShellExecute = false; 
cmd.StartInfo.RedirectStandardInput = true; 
cmd.StartInfo.RedirectStandardOutput = true; 
string argument = @"-pw pass C:\testfile.txt [email protected]:/home/usr"; 
cmd.StartInfo.Arguments = argument; 

cmd.Start(); 
cmd.StandardInput.WriteLine("exit"); 
string output = cmd.StandardOutput.ReadToEnd();