как скачать файл из sftp с помощью hostkey в excel vba - PullRequest
0 голосов
/ 21 июня 2019

Я удаляю деталь с помощью "WinSCP scripting interface .NET wrapper", так как здесь он не нужен.Ниже вы найдете фрагмент кода в VBA Excel для загрузки определенного файла из SFTP.Надеюсь, это сэкономит время кому-то.

Sub test()

Dim FSO As New FileSystemObject, FileOut As TextStream, FTPcommand As 
String

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileOut = 
FSO.CreateTextFile("C:\Users\Bunia\Desktop\FTP_commands.txt", True, 
False)

FileOut.WriteLine ("open sftp://UserName@HostPageName.com -hostkey=""ssh- 
rsa 2048 +/ ........ ="" - 
privatekey=""C:\Users\Bunia\Desktop\id_rsa.ppk""")
FileOut.WriteLine ("lcd ""C:\Users\Bunia\Desktop\Download Folder""")
FileOut.WriteLine ("get ABCfile.csv")
FileOut.WriteLine ("exit")
FileOut.Close
Call Shell("C:\Program Files (x86)\WinSCP\WinSCP.com 
/script=C:\Users\Bunia\Desktop\FTP_commands.txt")

End sub

Двойные кавычки для путей с пробелами не нужны.Я советую перейти в C: \ Program Files (x86) \ WinSCP, открыть WinSCP.com и попробовать там свой код, у вас будут сообщения об ошибках.У меня не было возможности в WinSCP сгенерировать код передачи для меня (версия: 5.15.2 (сборка 9590)).Я мог видеть только код для открытия сессии для SFTP.На самом деле, в начале я должен был создать свой открытый и закрытый ключ.Я скачал PuTTy (64bit для меня).Когда он установился, я открыл PuTTygen.Я выбрал тип ключа для генерации: RSA, Количество бит в сгенерированном ключе: 2048. Затем сгенерируйте пару ключей, загрузите файл секретного ключа.Я мог сохранить закрытый ключ в формате .ppk, но открытый ключ .pub не просто сохранить из приложения.Я скопировал открытый ключ, вставил в .txt, сохранил, а затем изменил расширение на .pub (для меня это выглядело как Office Publisher, но это было нормально).

...