Ftp Commands (Commons Library)

This task allows you to connect to an ftp server and issue commands. There are two types of commands supported:
1) The standard ftp commands as defined in RFC 959. Please see list of ftp commands. Only the most useful commands are listed here. Please search the Internet for RFC 959 if you need more information on all the standard Ftp commands.
2) Custom functions provided by the Ftp Command task. Please see list of custom functions.

Please note that the ftp commands, that you normally use in the ftp command-line tools in MSDOS, MacOSX or Unix etc. are not necessarily supported. For example, the LS, CD, Get or Put commands, in many command-line ftp tools are not valid RFC 959 ftp commands. Get and Put are commands created by many command-line ftp tools to implement the RETR and STOR commands, of RFC 959. To put or get files, you can use the custom functions $$GET& $$PUT that are provided by this task.

This task is multithreaded. So you can run multiple Ftp Command tasks simultaneously.

This task also outputs dynamic variables for each response provided by the Ftp server. The variables syntax is: TaskTitle::ResponseX. X is the response from the server for each of your Ftp commands. You can use these response variables in a Variable Monitor task to do conditional processing.

Host
Enter the host name or IP address of the Ftp server. If you have to connect through an Ftp proxy server, or firewall, enter the host name, or IP address of the firewall, or proxy server.

Port
Enter the desired port. Default Ftp port = 21

Password
In the password field, enter your password required to connect. Then in the command list, use the following syntax to send the hidden password: $$LOGIN::username::$PASSWORD$; or if you need to manually login, use: PASS $PASSWORD$. The string $PASSWORD$ will be replaced by the value in the password field. If you have no reason to hide your password, you do not need to fill the password field.

Commands
Enter your ftp commands, 1 per line. The custom commands are case sensitive. First line should normally be the USER command, and second line should normally be the PASS command. This field also supports dynamic variables. Using dynamic variables, you can enter a command which will be dynamically resolved at runtime. example: cd /users/$%USERNAME%$

Example1
USER tom sends username
PASS $PASSWORD$ sends password
ACCT production sends account information
PWD prints current remote ftp directory
CWD /users/tom sets /users/tom as the current ftp directory
$$LCD::c:\test sets c:\test as the current local directory
$$MPUT::test puts all files from c:\test, which include 'test' in their name, to /users/tom
$$MGET:: gets all files from /users/tom to c:\test

Example2
$$LOGIN::user::$PASSWORD$ logon information
PWD prints current remote ftp directory
CWD /users/tom sets /users/tom as the current ftp directory
$$LCD::c:\test sets c:\test as the current local directory
$$PASV sets the passive mode of transfer
$$GET::test.txt gets test.txt from /users/tom to c:\test
$$PUT::test.txt puts test.txt from c:\test to /users/tom

List of custom commands

$$LOGIN

Description: Simple logon using username and password information
Syntax: $$LOGIN::username::password
Examples: $$LOGIN::jim::jim04 or $$LOGIN::jim::$PASSWORD$
Comments: To hide password, use $PASSWORD$ and enter password in password field
For more complicated logons or to connect through firewalls, you may need to use as required:
USER, PASS, ACCT, SITE, OPEN etc..

$$LCD

Description: Sets the current local folder
Syntax: $$LCD::path_to_local_folder
Example: $$LCD::c:\data\test
Comments: Very important. Should always be set before transferring files
Comments: Internal module use only. Ftp server has no idea about current local folder
Comments: Used internally by $$PUT, $$GET, $$MPUT, $$MGET, $$MDEL functions

$$PASV

Description: Sets the passive mode of transfer.
Syntax: $$PASV

$$PUT

Description: Puts a single file from current local folder, to current remote ftp folder
Syntax: $$PUT::filename
Example: $$PUT::test.txt
Comments: Only single file is put, file should exist in current local folder

$$GET

Description: Gets a single file from current remote ftp folder to current local folder
Syntax: $$GET::filename
Example: $$GET::test.txt
Comments: Only single file is got, file should exist in current remote ftp folder

$$PPUT

Description: Puts a single file from local path to ftp path
Syntax: $$PPUT::path_to_local_file::path_to_remote_file
Example: $$PPUT::c:\data\test.txt::/users/tom/test5.txt
Comments: Only single file is put, file path should exist in the local system

$$PGET

Description: Gets a single file from ftp path to local path
Syntax: $$PGET::path_to_remote_file::path_to_local_file
Example: $$PGET::/users/tom/test5.txt::c:\data\test.txt
Comments: Only single file is got, file path should exist in the remote system

$$MPUT

Description: Puts multiple files from current local folder to current ftp folder
Syntax: $$MPUT::filename_filter
Example: $$MPUT:: (will put all files from current local folder)
Example: $$MPUT::test (will put all files which include test in their name)
Example: $$MPUT::.txt^.htm (will put all files which have .txt or .htm extensions)
Comments: Enter the filename_filter using the following wildcard rules

$$MGET

Description: Gets multiple files from current ftp folder, to current local folder
Syntax: $$MGET::filename_filter
Example: $$MGET::* (will get all files from current ftp folder)
Example: $$MGET::test (will put all files which include test in their name)
Example: $$MGET::.txt^.htm (will put all files which have .txt or .htm extensions)
Comments: Enter the filename_filter using the following wildcard rules
Comments: Automatically detects directory listing style and get directory information

$$MSGET

Description: Gets multiple files from current ftp folder to current local folder
Syntax: $$MSGET::* (will get all files from current ftp folder)
Example: $$MSGET::test (will put all files which include test in their name)
Example: $$MSGET::.txt^.htm (will put all files which have .txt or .htm extensions)
Comments: Enter the filename_filter using the following wildcard rules
Comments: Only obtains names of objects in current ftp directory
This function does not try to detect if object is a File or a Directory.
It will also try to GET directories, if they satisfy the filename filter.
This results in the following error being output, for every Directory in current ftp folder:
550 dir_name: [Error information varies by ftp server]. This is expected behavior. This function is useful when the library cannot parse a full directory listing and can only use a Names only list. NOTE that the Commons library MSGET command does not support getting directories. The JScape library MSGET command supports getting directories

$$MDEL

Description: Deletes multiple files from current ftp folder
Syntax: $$MDEL::filename_filter
Example: $$MDEL:: (will delete all files from current remote ftp folder)
Example: $$MDEL::test (will delete all files which include test in their name)
Example: $$MDEL::.txt^.htm (will delete all files which have .txt or .htm extensions)
Comments: Enter the filename_filter using the following wildcard rules

$$MLDEL

Description: Deletes multiple files from current local folder
Syntax: $$MLDEL::filename_filter
Example: $$MDEL:: (will delete all files from current local folder)
Example: $$MDEL::test (will delete all files which include test in their name)
Example: $$MDEL::.txt^.htm (will delete all files which have .txt or .htm extensions)
Comments: Enter the filename_filter using the following wildcard rules

$$SITECOMMAND

Description: Sends a SITE specific command
Syntax: $$SITECOMMAND::command_arguments
Example: $$SITECOMMAND::QUOTE SITE PRIMARY 2
Comments: Site should support that command



List of useful ftp commands - RFC 959

Example commands: ABOR ACCT ALLO APPE CDUP CWD DELE EPRT EPSV FEAT HELP LIST MDTM MFMT
MKD MLSD MLST MODE NLST NOOP PASS PASV PORT PWD QUIT REIN REST RETR RMD RNFR RNTO
SITE SMNT STAT STOR STOU STRU SYST TYPE USER

HELP

Description: Returns list of commands or details for a single command
Syntax: HELP [command]
Example: HELP returns a list of commands supported by the ftp server
Example: HELP USER returns details on the USER command

USER

Description: Sends the username to begin the login process
Syntax: USER userID
Example: USER tom

PASS

Description: After sending the USER command, send this command to complete login
Syntax: PASS user_password
Example: PASS ergts56r

PASV

Description: Sets the passive mode of transfer.
Syntax: PASV

TYPE

Description: Specifies Ascii or binary mode of data transfer
Syntax: TYPE mode
Example: TYPE I or TYPE A
Comments: A - ASCII text, E - EBCDIC text, I - image (binary data)

PORT

Description: Specifies host & port to which the ftp server should connect for next data transfer
Syntax: PORT h1,h2,h3,h4,p1,p2
Example: PORT 192,168,0,121,15,196
Comments: ip address = h1.h2.h3.h4, port = p1*256 + p2

ACCT

Description:Sends the account required for login
Syntax: ACCT account_name
Comments: normally sent after the PASS command. Uncommon command

CWD

Description: Sets the current ftp directory on remote ftp server
Syntax: CWD remote_ftp_path
Example: CWD /users/tom/data

CDUP

Description: Sets the parent of the current ftp folder to be the current ftp folder
Syntax: CDUP

DELE

Description: Deletes a single file from the current ftp folder
Syntax: DELE filename
Example: DELE test.txt

RNFR

Description: Used to rename a file. Specifies the file to be renamed
Syntax: RNFR original_name
Example: RNFR test.txt
Comments: Should be followed by RNTO command

RNTO

Description: Used to rename a file. Specifies the new name for the file
Syntax: RNTO new_name
Example: RNTO new.txt
Comments: Should be preceded by RNFR command

SITE

Description: Used to issue a site specific command
Syntax: SITE command
Example: Use 'HELP SITE' to see list and syntax of supported commands
Comments: May not be supported by many Ftp servers

RETR

Description: Transfers file from remote host
Syntax: RETR filename
Example: RETR test.txt
Comments: Should be preceded by the PORT or PASV commands

STOR

Description: Transfers file to the remote host
Syntax: STOR filename
Example: STOR test.txt
Comments: Should be preceded by the PORT or PASV commands