|
Save the following VBScript code to a .vbs file on your machine.
Edit the file and modify the following variables:
g_szRemoteUserMachine: your username
g_szRemoteDestination: destination folder on remote machine
g_szIdentityFile: identity file to use when connecting
'~~~~~~~~~~~~~~~~~~~~ Begin DragAndDropVCP.vbs
~~~~~~~~~~~~~~~~~~~~~~~~~~
' This script demonstrates how to use drag and drop to transfer
' files to a pre-determined directory on a pre-determined
remote
' machine using the Vcp.exe command-line utility that ships
with
' SecureCRT 3.4 and later.
'
' Running this script without any arguments will present
' a dialog explaining setup and usage information.
Option Explicit
Dim g_vArgs, g_fso, g_shell
Set g_vArgs = WScript.Arguments
Set g_fso = CreateObject("Scripting.FileSystemObject")
Set g_shell = CreateObject("WScript.Shell")
Dim g_szVcpExePath, g_szRemoteUserMachine,
g_szRemoteDestination, g_szIdentityFile
' Modify this username@machine to reflect
your username and the remote machine
g_szRemoteUserMachine = "jdev@blacktail"
' Modify this to reflect the path to the
destination folder on the remote
' machine
g_szRemoteDestination = "Temp:\VCP Testing"
' Modify this private key path to match
your own. For the sake of
' this script, we have created a special private key that
is not
' protected by a passphrase. This setup would not be recommended
' if you are not the only one with exclusive access to your
machine.
g_szIdentityFile = "C:\Temp\identity"
Main
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Main()
' Get the path
to VCP.exe from the registry.
Dim szReg
szReg = "HKLM\Software\VanDyke\SecureCRT\Install\Main
Directory"
g_szVcpExePath = g_shell.RegRead(szReg)
& "\vcp.exe"
If g_vArgs.Count
< 1 Then
ShowUsage
Exit Sub
End If
Redim vFilenames(g_vArgs.Count)
' used for parameters
that are not valid files/folders
Redim vUnknown(g_vArgs.Count)
Dim nIndex, szFileList,
nValidFilesAndFoldersCount
Dim szCurrentFileOrFolder, nUnknownCount
nUnknownCount =
0
nValidFilesAndFoldersCount = 0
For nIndex = 0 To g_vArgs.Count -
1
' We could
also probably check to make sure that we have access
' to the files,
but we're just going to live with access denied
' errors.
szCurrentFileOrFolder
= g_vArgs(nIndex)
If g_fso.FileExists(szCurrentFileOrFolder)
Or _
g_fso.FolderExists(szCurrentFileOrFolder)
Then
vFilenames(nIndex)
= szCurrentFileOrFolder
szFileList
= szFileList & vFilenames(nIndex) & vbCrlf
nValidFilesAndFoldersCount
= nValidFilesAndFoldersCount + 1
Else
vUnknown(nUnknownCount)
= szCurrentFileOrFolder
nUnknownCount
= nUnknownCount + 1
End If
Next
' For visual confirmation
that drag and drop is working
' correctly, uncomment the following
lines to display a
' message box with the arguments to
this script and then
' exit...
'MsgBox szFileList
'Exit Sub
If nUnknownCount
> 0 Then
' We don't
ever expect this to happen, but just in case...
Dim szUnknownList
For nIndex
= 0 To nUnknownCount - 1
szUnknownList
= szUnknownList & vUnknown(nIndex) & vbCrlf
Next
MsgBox "These
parameters were files or folders" & vbcrlf &
_
"that
did not exist:" & vbCrlf & vbCrlf & szUnknownList
End If
' Now upload each valid file or folder
to the remote machine
Dim szVCPCommand, szVCPArgs, nResult
szVCPArgs = "
-v -i " & chr(34) & g_szIdentityFile & chr(34)
For nIndex = 0 To nValidFilesAndFoldersCount
- 1
If g_fso.FolderExists(vFilenames(nIndex))
Then
'
If the item is a folder, we'll need to supply the " -r
"
'
cmd line arg to VCP
szVCPArgs
= szVCPArgs & " -r "
Else
'
... it must be a file that we are uploading
szVCPArgs
= szVCPArgs & " "
End If
'
Now let's build up our command line. We use chr(34) (")
to work
' around possible
spaces in our VCP.exe and remote paths.
szVCPCommand
= chr(34) & g_szVcpExePath & chr(34) & _
szVCPArgs
& " " & _
chr(34)
& vFilenames(nIndex) & chr(34) & " "
& _
g_szRemoteUserMachine
& ":" & chr(34) & _
g_szRemoteDestination
& chr(34)
' To take a sneak
peek at the command line, uncomment the 2 lines
' below:
'If Not Continue("Upload using
the following command?" & _
' vbCrlf
& chr(9) & szVCPCommand) Then Exit Sub
'
Now run the actual VCP command...
' The number
7 below is used to launch VCP in a minimized cmd window.
' If you want
the window to be hidden, use 0 (Zero) as the argument
' in place
of 7.
' "True"
instructs the scripting engine to wait until VCP is complete
' before continuing.
If you would like to transfer all files in
' parallel,
replace the True with False below.
nResult =
g_shell.Run(szVCPCommand, 7, False)
If nResult
<> 0 Then
MsgBox
"Failed to upload using the following command: "
& _
vbCrlf
& chr(9) & szVCPCommand & vbCrlf & vbCrlf
& _
"Error
code: " & nResult
End If
WScript.Sleep
50
'
Reset the command and args
szVCPArgs
= ""
szVCPCommand
= ""
Next
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Private Sub ShowUsage()
MsgBox "UploadToRemote Usage:"
& chr(13) & chr(13) & _
"1. Create
a Desktop shortcut to this .vbs file." & vbCrlf &
_
"If the
.vbs extension is not set to run wscript.exe" & vbcrlf
& _
"automatically
on your system, create a shortcut with" & vbcrlf
& _
"the
path set to: " & vbCrlf & _
chr(9) &
"<path to wscript.exe> <path to this .vbs file>"
& _
vbCrlf &
vbCrlf & _
"You
may also want to create a shortcut in your" & vbcrlf
& _
"""Send
To"" folder allowing you to right-click" &
vbcrlf & _
"on selected
files from within Explorer and" & vbcrlf & _
"Send
To -> (Machine Name)" & vbcrlf & vbcrlf &
_
"2. Use
SecureCRT's Key Generation Wizard to create a" &
vbcrlf & _
"private
key file that has an empty passphrase and" & vbcrlf
& _
"upload
the corresponding public key to the SSH" & vbcrlf
& _
"server.
This will allow you to connect and" & vbcrlf &
_
"authenticate
with the remote SSH server without" & vbcrlf &
_
"having
to input a passphrase or a password. Note" & vbcrlf
& _
"that
you could also supply these using the " & vbcrlf
& _
"'-p
<passphrase>' and '-pw <password>' command"
& vbcrlf & _
"line
options and you will need to modify the szVCPArgs" &
vbcrlf & _
"variable
in this script to add these options and" & vbcrlf
& _
"values."
& _
vbcrlf &
vbcrlf & _
"3. Drag
and drop files or folders from Explorer onto" & vbcrlf
& _
"the
Desktop shortcut for this .vbs file"
End Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Function Continue(szMsg)
Continue = True
If msgBox(szMsg, vbYesno) <>
vbYes Then Continue = False
End Function
'~~~~~~~~~~~~~~~~~~~~~~~~ End DragAndDropVCP.vbs
~~~~~~~~~~~~~~~~~~~~~~~~~~
|