エクセルファイルにpscp(パテクライアント)を使用してファイルをアップロードするマクロがあります。 VBAエクセルとパテ(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
ですが、私は二つの問題があります。
のWindows 10システムのポップアップ彼はPSCPを実行したい場合は、ユーザーに尋ねるメッセージを使用して1) 。EXE。私はそれを迂回したいと思います。
代わりのWScript.Shell私はこれを使用していた:コールシェルを操作システムを使用して
Call Shell(strCommand, vbNormalFocus)
はpscp.exeの実行について質問しないが、問題は、私はへの道を持っていないですプロセスは、ユーザーが初めてのコマンドを実行します
2)上にあるとき、パテは、このメッセージを促し知っている:
サーバーのホストキーはレジストリにキャッシュされません。 は、サーバーがあなたが思っているコンピューターであることを保証していません。 サーバのrsa2キー>フィンガープリントは次のとおりです。[ssh-rsa 1024 somekey] このホストを信頼する場合は、「y」と入力してPuTTYのキャッシュにキーを追加し、接続時に を指定します。 キーをキャッシュに追加せずに1回だけ接続を続けたい場合は、「n」と入力します。このホストを信頼しない場合は、 を押して接続を中止します。キーをキャッシュに保存しますか? (y/n)
私は完全に即座に無料、自動にする必要があります。
は、私はこのような "n個のエコー" を使用しようとした:strCommand = "エコーN |" & cstrSftp & "-sftp -l" &プエル& "-pw" & pPass & _ "" & PFILE & "" & PHOST & ":IWshShell3" 失敗 "& pRemotePath
しかし、私はメッセージが表示されます"。
これらは2つの異なる質問です。だから別々に彼らに尋ねる。 –
[pcpホストキープロンプトへの自動応答としてecho yを使う](https://stackoverflow.com/questions/39924091/using-echo-y-as-an-automated-response-to-a-pcp) -hostkey-prompt) –