2012-05-03 230 views
3

我的目标是下载,而不是从SFTP服务器上传文件,并且我正在尝试修改本网站上其他问题的代码,以便这样做(为了方便起见,我粘贴了下面的代码)。使用SFTP与VBA下载文件

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

open username:[email protected]: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 
+0

听起来像你在制造一个木马......笑话。 – Raptor

+0

我从来没有使用sftp,所以现在我要建议的可能无法正常工作。 '-l'做什么?在研究sftp时,我遇到了一个用户使用'-B'而不是'-l'来下载文件的网站。看看是否有帮助? –

+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将不起作用。

我认为您应该查看该链接上的Putty文档。