2012-07-13 4 views
0

PSCP (PuTTY) 전송 방법론을 사용하여 내 로컬 컴퓨터의 파일을 원격 서버로 전송하는 데 C#의 코드 스 니펫을 사용할 수 있습니까? 나는 정말로 도움을 감사 할 것이다. 감사합니다.PuTTY in C# 파일 전송

+1

.NET 용 무료 및 상업용 SFTP 클라이언트 구성 요소가 많이 있습니다. 왜 퍼티를 사용합니까? –

+0

[SCP for C#] 가능한 복제본 (http://stackoverflow.com/questions/651399/scp-for-c-sharp) –

답변

1

SSHNet 또는 WinSCP과 같은 SCP를 지원하는 라이브러리를 사용할 수 있습니다. 둘 다 어떻게 작동하는지 보여주는 샘플과 테스트를 제공합니다.

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

} 코드합니다 (samples에서) 같이 보이는 WinSCP에 라이브러리와

: 당신은 (테스트 파일에서)이 코드를 사용하여 파일을 업로드 할 수 있습니다 SSH.Net으로

: 최선의 선택이 될 수있는 .NET 라이브러리와 SFTPSCP 지원되는 클라이언트를 사용하여

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

0

. 그러나 여기에 사용하는 간단한 방법은 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();