2012-05-03 3 views
3

내 목표는 SFTP 서버에서 파일을 업로드하지 않고 다운로드하는 것입니다.이 사이트의 다른 질문에서 코드를 적용하려고합니다 (편의를 위해 아래 코드를 붙여 넣었습니다.)).VBA를 사용하여 SFTP를 사용하여 파일을 다운로드하는 중

퍼티에서 PSFTP를 다운로드했습니다. 나는 세 가지 질문이

open username:[email protected]:1111 

: 나는 다음과 같은 명령 줄을 사용하여 연결하려고 할 때 PSFTP가 종료

  1. 내 명령 줄에 뭔가 문제인가? 그렇지 않다면 무엇이 문제가 될 수 있습니까?

  2. 내가 아는 한 SFTP는 일반적으로 get/put 명령을 사용하지만 아래 코드에 put 명령이 표시되지 않으므로 파일을 다운로드하기 위해 get 명령을 입력해야하는 위치를 이해할 수 없습니다 그것을 업로드하는 대신에 (아래의 코드가 수행하는 것으로 가정합니다).

  3. pRemotePath는 SFTP 서버의 파일 위치이고 pFile은 파일을 다운로드 할 위치입니다.

간단한 설명은 대단히 감사하겠습니다.

Public Sub SftpGet() 

    Const cstrSftp As String = """C:\Users\Ron\UtilityTools\psftp.exe""" 
    Dim strCommand As String 
    Dim pUser As String 
    Dim pPass As String 
    Dim pHost As String 
    Dim pFile As String 
    Dim pRemotePath As String 

    pUser = "uid" 
    pPass = "PW" 
    pHost = "dns" 
    pFile = "C:\Users\Ron\activity.txt" 
    pRemotePath = "Z:/activity.log" 

    strCommand = cstrSftp & " -sftp -l " & pUser & " -pw " & pPass & _ 
     " " & pFile & " " & pHost & ":" & pRemotePath 
    Debug.Print strCommand 
    Shell strCommand, 1 ' vbNormalFocus ' 
End Sub 
+0

은 트로이 목마 ... 농담을하는 것처럼 들립니다. – Raptor

+0

나는 sftp로 일한 적이 없으므로 지금 제안 할 내용이 효과가 없을 수 있습니다. '-l'은 무엇을합니까? sftp에 대해 연구하는 동안 사용자가 파일을 다운로드하기 위해'-l' 대신'-B'를 사용했던 사이트를 발견했습니다. 도움이되는지 확인하십시오. –

+1

@SiddharthRout'-l' 옵션은 서버에서 사용자 계정을 지정하는 데 사용됩니다. 나는 ssh 클라이언트 명령에서 명령 옵션을 모방하려는 의도라고 생각한다. – HansUp

답변

1

Windows 명령 프롬프트 세션으로 시작해야한다고 생각합니다. 비슷한 질문에 대한 답변에서 제안한대로 명령 줄에 대한 세부 정보를 작성하십시오 : SFTP upload with VBA. 일단 거기에서 작동하는 명령 행이 있으면 VBA에서 동일한 명령을 실행하는 것이 매우 쉽습니다.

퍼티의 psftp.exe 도구는 사용하지 않았으며 pscp.exe 도구 만 사용 했으므로 psftp.exe 명령 줄을 구성하는 방법에 대한 도움은 드릴 수 없습니다. 내가 Putty's documentation에서 발견 한 한 가지는 PSFTP (pscp.exe)는 SSH-2 서버에서만 작동합니다. 대상 서버가 SSH-1 만 지원하면 PSFTP가 작동하지 않습니다.

나는 그 링크에서 퍼티 문서를 검토하는 것이 가치가 있다고 생각합니다.

관련 문제