我的目标是下载,而不是从SFTP服务器上传文件,我正在尝试调整此网站上另一个问题的代码来执行此操作(为方便起见,我粘贴了下面的代码)。
我从Putty下载了PSFTP。当我尝试使用以下命令行进行连接时,PSFTP关闭:
open username:password@server.com.port:1111
我有三个问题:
我的命令行有问题吗?如果不是那么可能是什么问题?
据我所知,SFTP通常会使用get / put命令,但我在下面的代码中看不到put命令,所以我不明白我应该在哪里输入get命令来下载文件而不是上传它(这是下面的代码应该做的)。
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 :(得分:1)
我认为你应该从Windows命令提示会话开始。正如我在回答类似问题时建议的那样,在那里计算出命令行的详细信息:SFTP upload with VBA。一旦你有一个在那里工作的命令行,从VBA执行相同的命令将非常容易。
我从未使用Putty的psftp.exe
工具,仅使用pscp.exe
,因此我无法提供有关如何构建psftp.exe
命令行的帮助。我在Putty's documentation注意到的一件事是PSFTP(pscp.exe
)只能与SSH-2服务器一起工作---如果你的目标服务器只支持SSH-1,PSFTP将不起作用。
我认为您在该链接上查看Putty文档是值得的。