3

我的目标是下载,而不是从 SFTP 服务器上传文件,并且我正在尝试修改此站点上另一个问题的代码来做到这一点(为方便起见,我粘贴了下面的代码)。

我从 Putty 下载了 PSFTP。当我尝试使用以下命令行连接时,PSFTP 关闭:

open username:password@server.com.port:1111 

我有三个问题:

  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
4

1 回答 1

2

我认为您应该从 Windows 命令提示符会话开始。正如我在回答类似问题时所建议的那样,在那里制定命令行的详细信息:SFTP upload with VBA。一旦你有一个在那里工作的命令行,就可以很容易地从 VBA 执行相同的命令。

我从来没有使用过 Putty 的psftp.exe工具,只有pscp.exe,所以我无法提供有关如何构建psftp.exe命令行的帮助。我在Putty 的文档中注意到的一件事 是 PSFTP ( pscp.exe) 只能与 SSH-2 服务器一起使用 --- 如果您的目标服务器仅支持 SSH-1,PSFTP 将无法工作。

我认为您值得在该链接上查看 Putty 文档。

于 2012-05-03T15:29:20.183 回答