任何人都可以用 C# 中的代码片段帮助我使用 PSCP (PuTTY) 传输方法将我本地机器上的文件传输到远程服务器吗?我非常感谢您的帮助。谢谢
问问题
8007 次
2 回答
3
您可以使用支持 SCP 的库,例如SSHNet或WinSCP。两者都提供了演示它们如何工作的示例和测试。
使用 SSH.Net,您可以使用以下代码(来自测试文件)上传文件:
using (var scp = new ScpClient(host, username, password))
{
scp.Connect();
scp.Upload(new FileInfo(filename), Path.GetFileName(filename));
scp.Disconnect();
}
使用 WinSCP 库,代码如下所示(来自示例):
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();
}
于 2012-07-13T14:50:14.510 回答
0
使用.NET 库SFTP
并SCP
支持客户端可能是最佳选择。但这里有一个简单的使用方法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();
于 2015-09-25T06:39:18.617 回答