【问题标题】:VBScript to download files via SFTP using WinSCP fails with Unable to use key file (unable to open file)VBScript 使用 WinSCP 通过 SFTP 下载文件失败,无法使用密钥文件(无法打开文件)
【发布时间】:2015-09-08 19:16:25
【问题描述】:

我正在尝试使用 WinSCP 通过 SFTP 从远程目录下载一些文件。

到目前为止,我有这个 VBScript。请注意,与 SFTP 服务器的连接是通过私钥(.ppk 文件)建立的。

代码如下:

Function SFTPDownload(byVal sLocalPath, byVal sRemotePath, byVal sRemoteFile)

    Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
    Set oFTPScriptShell = CreateObject("WScript.Shell")

    sRemotePath = Trim(sRemotePath)
    sLocalPath = Trim(sLocalPath)

    sOriginalWorkingDirectory = oFTPScriptShell.CurrentDirectory
    oFTPScriptShell.CurrentDirectory = sLocalPath

    sFTPScript = sFTPScript & "option batch on" & vbCRLF
    sFTPScript = sFTPScript & "option confirm off"& vbCrLf
    sFTPScript = sFTPScript & "option transfer binary" & vbCrLf
    sFTPScript = sFTPScript & "open username:@sftp.server.com:22 -privatekey=mypriviatekey.ppk" & vbCrLf
    sFTPScript = sFTPScript & "cd " & sRemotePath & vbCrLf
    sFTPScript = sFTPScript & "get " & sRemoteFile & vbCRLF
    sFTPScript = sFTPScript & "close" & vbCrLf
    sFTPScript = sFTPScript & "exit" & vbCrLf


    sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
    sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName

    'Write the input file for the sftp command to a temporary file.
    Set oFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
    oFTPScript.WriteLine(sFTPScript)
    oFTPScript.Close
    Set oFTPScript = Nothing  

    sCmd = """C:\Program Files (x86)\WinSCP\WinSCP.com"" -script=" & sFTPTempFile 
    oFTPScriptShell.run sCmd

    Wscript.Sleep 1000

    ' Get rid of temp file used for input to sftp
    oFTPScriptFSO.DeleteFile(sFTPTempFile)

    Set oFTPScriptFSO = Nothing
    Set oFTPScriptShell = Nothing
    End Function

    Dim myResult
    myResult = SFTPDownload("F:\WLMS_TEAM\TOUHID\TT Files\", "/done", "EE*.csv")

脚本打开 WinSCP 命令提示符并给我这个:

无法使用密钥文件(无法打开文件)

知道如何让它工作吗?

【问题讨论】:

    标签: vbscript sftp winscp


    【解决方案1】:

    我找到了解决方案。代码没有任何问题。

    我刚刚修改了脚本文件以包含私钥的完整路径,如下所示:

    option batch on
    option confirm off
    option transfer binary
    open btwsale:@sftp.server.com:22 -privatekey="C:\Program Files (x86)\WinSCP\mypriviatekey.ppk"
    cd /done
    lcd "C:\Program Files (x86)\WinSCP\"
    get EE*.csv
    exit
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 2019-01-27
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多