2017-10-17 9 views
0

pscp (putty 클라이언트)를 사용하여 내 서버에 파일을 업로드하는 Excel 내 매크로에 매크로가 있습니다. VBA Excel 및 퍼티 (FTP) - 호출 대기 및 호스트 키가 레지스트리에 캐싱되지 않음

이 잘 작동 코드

Dim wsh As Object 
Set wsh = VBA.CreateObject("WScript.Shell") 
Dim waitOnReturn As Boolean: waitOnReturn = True 
Dim windowStyle As Integer: windowStyle = 1 

Dim cstrSftp As String 
Dim strCommand As String 
Dim pUser As String 
Dim pPass As String 
Dim pHost As String 
Dim pFile As String 
Dim pRemotePath As String 

'Specifying the values 
cstrSftp = """" & Application.ActiveWorkbook.Path & "\pscp.exe" & """" 
pUser = "username" 
pPass = "password " 
pHost = "ftp.xyz.com" 
pFile = """" & Application.ActiveWorkbook.Path & "\test.mkv" & """" 
pRemotePath = "/home/storage/public_html/" 

'Setting the command 
strCommand = cstrSftp & " -sftp -l " & pUser & " -pw " & pPass & _ 
    " " & pFile & " " & pHost & ":" & pRemotePath 

'Execution 
wsh.Run strCommand, windowStyle, waitOnReturn 

입니다,하지만 난 두 가지 문제가 있습니다

윈도우 10 시스템 팝업 그는 PSCP를 실행하고자하는 경우 사용자에게 요청하는 메시지를 사용

1) .exe. 나는 그것을 우회하고 싶다. 대신 WScript.Shell의

내가이 사용하던 :

Call Shell(strCommand, vbNormalFocus) 

pscp.exe 실행에 대한 요구하지 않는 전화 셸 운영 시스템을 사용하지만, 문제는 내가 방법을이없는 것입니다 프로세스가 사용자가 처음으로 명령을 실행

2) 위에있을 때, 퍼티이 메시지가 프롬프트 알고

서버의 호스트 키는 레지스트리에 캐시되지 않습니다. 은 서버가 사용자가 생각하는 컴퓨터라는 것을 보증하지 않습니다. 서버의 rsa2 키> 지문 : [ssh-rsa 1024 somekey] 이 호스트를 신뢰하는 경우 PuTTY의 캐시에 키를 추가하려면 "y"를 입력하고 연결시에는 을 사용하십시오. 키를 캐시에 추가하지 않고 연결을 한 번만 수행하려면 "n"을 입력하십시오. 이 호스트를 신뢰하지 않으면 을 눌러 연결을 포기하십시오. 캐시에 키를 저장 하시겠습니까? (y/n)

나는 그것이 완전히 신속하게 무료, 자동으로 필요합니다.

내가 같이 "N 에코"를 사용하려 :

strCommand = "에코 N |"& cstrSftp & "-sftp -l"& pUser & "-pw"& pPass & _ ""& PFILE & ""& pHost & "IWshShell3"실패 "& pRemotePath

그러나 나는이 메시지가".

+0

두 가지 질문이 있습니다. 그러므로 그들에게 따로 물어보십시오. –

+1

[echo 명령을 pcp 호스트 키 프롬프트에 대한 자동 응답으로 사용] (https://stackoverflow.com/questions/39924091/using-echo-y-as-an-automated-response-to-a-pcp) -hostkey-prompt) –

답변

-1

문제 2 해결됨!

Echo는 배치 파일 명령이므로 래퍼가 있어야합니다.

이 명령이 작동 :

strCommand = "cmd를/C 에코 N |"& cstrSftp & "-sftp -l"& pUser & "-pw"& pPass & _ ""& PFILE & "" & pHost & ":"&pRemotePath

+0

절대로 이것을하지 마십시오! 그 이유는 프롬프트가 있습니다. 호스트 키를 확인해야합니다. –