C#中的PuTTY用于文件传输

时间:2012-07-13 14:34:32

标签: putty

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

2 个答案:

答案 0 :(得分:2)

您可以使用支持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();

}

答案 1 :(得分:0)

在.NET库中使用SFTPSCP支持的客户端可能是最佳选择。但这是一种使用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 user@10.10.10.10:/home/usr";
cmd.StartInfo.Arguments = argument;

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