Solved

FTP Connect Code in VB Script

Posted on 2008-10-29
6
3,145 Views
Last Modified: 2013-11-18
I am trying to edit the following code so that I can connect:

explict TLS/SSL
port: 2021
ftp.Hostname = "ftp.test.com"

        ftp.Username = "User"

        ftp.Password = "Pass"

 

        ' The default data transfer mode is "Active" as opposed to "Passive".

        ' Change it to Passive by setting the Passive property:

        ftp.Passive = 1

 

        '  Establish an AUTH SSL secure channel after connection

        '  on the standard FTP port 21.

        ftp.AuthTls = 1

 

        '  The Ssl property is for establishing an implicit SSL connection

        '  on port 990.  Do not set it.

        ftp.Ssl = 0

        '  Connect and login to the FTP server.

        connectStatus = ftp.Connect()

        If (connectStatus <> 1) Then

                'MsgBox ftp.LastErrorText

                'WScript.Quit

                Main = DTSTaskExecResult_Failure

        Else

                dirStatus = ftp.ChangeRemoteDir("RMed")

                If (dirStatus <> 1) Then

                    'MsgBox ftp.LastErrorText

                    'WScript.Quit

                Main = DTSTaskExecResult_Failure

        End If          

        

        

        

        'MsgBox ftp.getCurrentRemoteDir()

                

        'specify the file path and name on the local machine

        localInvoiceFile = "C:\Documents and Settings\Nathan\My Documents\2\dRMed\Invoice_RMed.txt"

        localPatientFile = "C:\Documents and Settings\Nathan\My Documents\2\dRMed\Patient_RMed.txt"

                

        'specify the file path and name on the remote machine

        remoteInvoiceFile = "C:\Clients\Strat\File Uploads\Customer Uploads\RMed\Invoice_RMed.txt"

        remotePatientFile = "C:\Clients\Strat\File Uploads\Customer Uploads\RMed\Patient_RMed.txt"

        'MsgBox remoteInvoiceFile 

        'MsgBox remotePatientFile

                

                'download the files from the remote server

                transferStatus = ftp.getFile(remoteInvoiceFile, localInvoiceFile)

                if (transferStatus <> 1) then

                        'MsgBox ftp.LastErrorText

                        Main = DTSTaskExecResult_Failure

                else

                        Main = DTSTaskExecResult_Success

                end if

                

                transferStatus = ftp.GetFile(remotePatientFile, localPatientFile)

                if (transferStatus <> 1) then

                        'MsgBox ftp.LastErrorText

                        Main = DTSTaskExecResult_Failure

                else

                        Main = DTSTaskExecResult_Success

                end if

        

        END IF

        ftp.Disconnect  

 

End Function

Open in new window

0
Comment
Question by:N R
  • 3
  • 3
6 Comments
 
LVL 4

Expert Comment

by:nasserd
ID: 22834203
The code is not specifying the FTP Port as 2021 (as your statement says).  Maybe a different FTP component is necessary, too.
0
 
LVL 11

Author Comment

by:N R
ID: 22834412
I know, I need it to, but I don't know vb code.
0
 
LVL 4

Expert Comment

by:nasserd
ID: 22835643
Hmm.  You may need to verify with the FTP ActiveX Component being used.  From the comments included, it may be a Chilkat FTP component; usually it would be object.Port = 1234

e.g.
ftp.HostPort = 2021 or
ftp.Port = 2021

As we don't know the exact component being used, there's more trial and error necessary.  Windows, by default, doesn't expose all of these parameters in its own FTP command-line tool.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 11

Author Comment

by:N R
ID: 22835879
Ok got it.  Now getting error:


Step Error Source: Microsoft Data Transformation Services (DTS) Package
Step Error Description:The task reported failure on execution.
Step Error code: 8004043B
Step Error Help File:sqldts80.hlp
Step Error Help Context ID:1100
'**********************************************************************

'  Visual Basic ActiveX Script

'************************************************************************
 

Function Main()	
 

	set ftp = CreateObject("Chilkat.Ftp2")
 

	'  Any string unlocks the component for the 1st 30-days.

	componentStatus = ftp.UnlockComponent("testftp")

	If (componentStatus <> 1) Then

		'MsgBox ftp.LastErrorText

		WScript.Quit

		Main = DTSTaskExecResult_Failure

	End If

	
 

            ftp.Hostname = "IP"

            ftp.Username = "user"

            ftp.Password = "pass"

            ftp.Port = 2021
 

       ' The default data transfer mode is "Active" as opposed to "Passive".

	' Change it to Passive by setting the Passive property:

	ftp.Passive = 1
 

	'  Establish an AUTH SSL secure channel after connection

	'  on the standard FTP port 21.

	ftp.AuthTls = 1
 

	'  The Ssl property is for establishing an implicit SSL connection

	'  on port 990.  Do not set it.

	ftp.Ssl = 0
 

	'  Connect and login to the FTP server.

	connectStatus = ftp.Connect()

	If (connectStatus <> 1) Then

		'MsgBox ftp.LastErrorText

		'WScript.Quit

		Main = DTSTaskExecResult_Failure

	Else

		dirStatus = ftp.ChangeRemoteDir("/File Uploads/Customer Uploads/RMed")

		If (dirStatus <> 1) Then

		    'MsgBox ftp.LastErrorText

		    'WScript.Quit

			Main = DTSTaskExecResult_Failure

		End If		

		

		'MsgBox ftp.getCurrentRemoteDir()
 

    'specify the file path and name on the local machine

		localInvoiceFile = "C:\Documents and Settings\Nathan\My Documents\2\dRickMed\Invoice_RMed.txt"

		localPatientFile = "C:\Documents and Settings\Nathan\My Documents\2\dRickMed\Patient_RMed.txt"

		

		'specify the file path and name on the remote machine

		remoteInvoiceFile = "Invoice_RMed.txt"

		remotePatientFile = "Patient_RMed.txt"

		'MsgBox remoteInvoiceFile 

		'MsgBox remotePatientFile

		

		'download the files from the remote server

		transferStatus = ftp.getFile(localInvoiceFile, remoteInvoiceFile)

		if (transferStatus <> 1) then

			'MsgBox ftp.LastErrorText

			Main = DTSTaskExecResult_Failure

		else

			Main = DTSTaskExecResult_Success

		end if

		

		transferStatus = ftp.GetFile(localPatientFile, remotePatientFile)

		if (transferStatus <> 1) then

			'MsgBox ftp.LastErrorText

			Main = DTSTaskExecResult_Failure

		else

			Main = DTSTaskExecResult_Success

		end if

	End If
 

	ftp.Disconnect 	
 

End Function

Open in new window

0
 
LVL 4

Assisted Solution

by:nasserd
nasserd earned 250 total points
ID: 22836032
SQL DTS, eh?  That's a different buggaboo!  You're best off re-categorizing this issue into the SQL Server categories... FTP via DTS has been a bane of my own existence, too.

Try declaring all of the variables (DIM xyz) and read this eggheadcafe sample:
http://www.eggheadcafe.com/articles/20030923.asp
0
 
LVL 11

Accepted Solution

by:
N R earned 0 total points
ID: 22842772
Oh nope was in the code, it has ftpget it needed to be ftpput.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now