5. Remote File Access with the RCP, FTP, and TFTP Utilities

 

This chapter describes how to copy files between your local system and a remote system using the RCP, FTP, and TFTP utilities.

The FTP commands for renaming files, deleting files, and creating and deleting directories are described in the FTP command reference in Appendix B.

 

Copying Files Using RCP

The MultiNet RCP utility uses the 4.3BSD UNIX RCP (remote copy) protocol to transfer files between the local host and a remote host. The Kerberos version of RCP also provides authenticated access between the two systems.

When the index file creates new buckets (the space allocated to store units of data) beyond the previous End-Of-File mark, but the End-Of-File is not updated to reflect the new buckets, RCP transfers the allocated buckets to the End-Of-File. You can turn this feature off by defining the logical MULTINET_RCP_INDEX_UPTO_EOF.

 

Requirements for RCP

The requirements for using the RCP utility are:

·         Both the local and remote host must support the RCP protocol.

·         You must specify the names of files on the remote host using the file-naming conventions of the remote host.

·         If the remote host is an OpenVMS system, you must ensure that neither the system-wide login command procedure nor your local LOGIN.COM file displays any text. See Inhibiting Output from SYSLOGIN.COM and LOGIN.COM for more information on inhibiting output from these command procedures.

The "R" services authentication database files on the server system must be configured to allow RCP access from the local system. See the Using RCP section for additional information on "R" services authentication.

 

Using RCP

You can use RCP interactively or via a command file in batch mode.

Before you can copy files using RCP, the remote system must determine that you are allowed to do   so. Normally, the remote system's RCP server checks the "R" services host equivalence files to determine whether or not you are authorized to copy files to or from the remote system. RCP uses the same authentication scheme as RLOGIN and RSHELL.

However, if you are using RCP with Kerberos authentication, authentication is handled by acquiring “tickets" that permit access to cooperating systems. (See Chapter 4 for more information.)

The following is an example using RCP to copy the file /etc/hosts from the UNIX system UNIX.EXAMPLE.COM to the user's current default directory on the local OpenVMS system.

Note! The double quotation marks around "/etc/hosts" are necessary to prevent the slashes in the path name from being interpreted by DCL.

$ RCP UNIX.EXAMPLE.COM::"/etc/hosts" []

This command assumes the remote user name is the same as the local user name. To specify a different remote user name, use the /USERNAME qualifier as shown in the following command:

$ RCP /USERNAME=JETSON UNIX.EXAMPLE.COM::.cshrc [.UNIX-FILES]

If the host equivalence files are not set up, you can still use the RCP command by specifying the
/PASSWORD qualifier. In that case, REXEC authentication is used instead. The command format for specifying a password is as follows:

$ RCP /USERNAME=JETSON /PASSWORD=ASTRO -
_$ UNIX.EXAMPLE.COM::report.july [.REPORTS]

Note! If you specify /PASSWORD without a value, you are prompted for the password with echoing disabled.

To copy files with RCP using Kerberos authentication, use the following format:

$ RCP /AUTHENTICATION=KERBEROS UNIX.EXAMPLE.COM::"etc/hosts" []

or

$ RCP /AUTHENTICATION UNIX.EXAMPLE.COM::"etc/hosts" []

 

Inhibiting Output from SYLOGIN.COM and LOGIN.COM

The RCP protocol requires that neither the system-wide login command procedure (SYS$MANAGER:SYLOGIN.COM) nor users' LOGIN.COM procedures display any output.    The following example shows commands to add to your LOGIN.COM and the system-wide SYLOGIN.COM to prevent any output from being displayed when they are executed.

$ VERIFY = 'F$VERIFY(0)                ! Turn off verify without echoing
$ IF F$MODE() .EQS. "OTHER" THEN EXIT  ! If a DETACHED process (RSHELL)
.
.
.
$ IF VERIFY THEN SET VERIFY            ! If a batch job, may want to turn
                                       ! verify back on.

 

Accessing Files with FTP

The FTP utility uses the Internet standard File Transfer Protocol (FTP) to transfer files between        the local host and a remote host. FTP also allows you to perform directory and file operations,      such as changing the working directory, listing files, renaming directories and files, and deleting        directories and files.

The FTP utility has a command-line interface. Each action, such as copying files, requires a specific command.

 

Requirements for Using FTP

Requirements for using the FTP utility include the following:

·         Both the local and remote host must support the Internet standard File Transfer Protocol.

·         The names of files on the remote host must be specified using the file-naming conventions of the remote host.

 

Invoking FTP and Logging In

You can use FTP interactively or in batch mode with a command file.

When you invoke FTP, an FTP server process is created on the remote host. You can perform a limited set of operations on the files and directories that you have permission to access. FTP authenticates you on the remote host by checking the user name and password you specify against those in the authorization database on the remote host. For simplicity in this discussion, this verification process is referred to as logging in; however, you do not actually log in interactively       to the remote host.

To illustrate, assume you are a user on the local system and you want to log into the remote host       RESEARCH.EXAMPLE.COM. You can log in as yourself (by entering your name) or you can log in as any other user on RESEARCH, for example, "MARK" or "BUBBA," as long as the specified user name is valid on the remote host and you know Mark's or Bubba's password.

Note! Even though logging into another user's account is mentioned in the previous section, sharing passwords with other users is strongly discouraged.

You can connect to RESEARCH either by specifying the host name at the DCL command prompt (see the example below), or by entering the CONNECT command at the FTP prompt (see the example below).

Specifying host name at DCL prompt:

$ FTP RESEARCH.EXAMPLE.COM
DEVELOPMENT.EXAMPLE.COM MultiNet FTP user process 5.5(nnn)
Connection opened (Assuming 8-bit connections)
<RESEARCH.EXA<{:E.COM MultiNet FTP Server Process 5.5(nnn) at
Tue 16-Mar-2016 7:42am-EST
RESEARCH.EXAMPLE.COM>LOGIN MARK
Password: password [not displayed]
RESEARCH.EXAMPLE.COM>

Entering the CONNECT command at FTP prompt

$ FTP
DEVELOPMENT.EXAMPLE.COM MultiNet FTP user process 5.5(nnn)
FTP>CONNECT RESEARCH.EXAMPLE.COM
Connection opened (Assuming 8-bit connections)
<RESEARCH.EXAMPLE.COM MultiNet FTP Server Process 5.5(nnn) at
Tue 15-Mar-2016 7:42am-EST
RESEARCH.EXAMPLE.COM>LOGIN MARK
Password: password [not displayed]
RESEARCH.EXAMPLE.COM>

Note! The initial FTP prompt (before connection to the remote host) is FTP>. After a connection is established, the prompt changes to the name of the remote host and FTP enters command mode.

At this point, you can specify your user name and password on RESEARCH with the FTP LOGIN command. Alternately, you can enter a command such as LOGIN MARK to log in as Mark (assuming you know Mark's password). The system then displays the Password: prompt. After you enter the password (which is not echoed), the system returns to FTP command mode, displays the prompt, and awaits further input.

Each time you invoke FTP, it checks first for a file called FTP.INIT in your login directory (SYS$LOGIN) and executes any commands in that file before it prompts you for input. Any commands you want executed at the beginning of every FTP execution can be included in this file. See the FTP Initialization File section for a description of FTP commands commonly used in FTP.INIT files.

Note! Because the FTP server process is started by running SYS$SYSTEM:LOGINOUT.EXE, both the system-wide login command procedure (SYS$MANAGER:SYLOGIN.COM) and the specific user's LOGIN.COM are executed. As a result, any customization such as specifying default file protection, or process/job logical name definitions, and so on, are invoked in these command procedures and are available under the FTP server process.

All standard OpenVMS security-checking mechanisms are used to validate the FTP server process creation. If either of these command procedures contain any commands that are specific to interactive jobs (SET TERMINAL commands, for example), the FTP server process may crash. The easiest way to avoid this problem, without altering the functionality of these command procedures, is to use the DCL lexical function F$MODE together with interactive specific commands. For example:

$ IF F$MODE() .EQS. "INTERACTIVE" THEN SET TERMINAL /INQUIRE

The FTP Log Files section provides more information to assist you in determining the cause of any problems with the FTP server.

 

Using FTP Commands

After you have logged into a remote host, as described in the Invoking FTP and Logging In section, you can use FTP commands for operations such as copying files between hosts, changing working directories, listing directories, removing files, and renaming files. All FTP commands are described in Appendix B.

The FTP user interface looks very similar to the TOPS-20 command interface. In particular:

·         You can type an ESC (escape character) at any point to attempt to complete (fill in) the current command, parameter (including file names), or qualifier.

·         You can type a question mark (?) at any time for help on what to enter next.

·         A question mark entered at the current FTP prompt displays the currently available commands. The commands that are available depend on whether or not a connection to a remote server has been established. Some commands are always recognized; others are recognized only before or after a connection has been made.

 

Getting FTP Command Help

The HELP command displays a brief description of a specified FTP command, general help information, or a list of available HELP topics. The format of the HELP command is as follows:

FTP>HELP [command]

If you specify the command name, HELP displays information for the specified command. If you type a ? in place of a command, HELP displays general help information. If you request HELP without an argument, the HELP facility lists available help topics and instructions for obtaining additional information.

Note! The available commands vary depending on whether you have an open connection to a remote host.

 

Using Basic FTP Commands

Some commands simply set or reset various FTP options. They can be explicitly set using the ON argument or reset using the OFF argument. The default, if no argument is typed, is TOGGLE. Hence, if an option is on, executing the command controlling the option sets it to off. Executing the command a second time resets it to on. For example, when you first invoke FTP, the VERBOSE option (which gives detailed messages) is off. The following command would toggle VERBOSE on:

FTP>VERBOSE

You can reset the VERBOSE option to off by executing the above command a second time, hence "toggling" the setting back and forth.

You can display the state of a MultiNet FTP Server at any given time using the STATUS command. The following example shows the information reported by the STATUS command. Note, however, that some FTP implementations do not support the STATUS command.

RESEARCH.EXAMPLE.COM>STATUS
<RESEARCH.EXAMPLE.COM MultiNet FTP Server Process 5.5 (nnn)
User MARK logged into directory USERS:[MARK]
<The current transfer parameters are:
<   MODE S
<   STRU O VMS
<   TYPE A N
<A connection is open to host DEVELOPMENT.EXAMPLE.COM
<The data connection is CLOSED.

 

Specifying TCP Window Size with FTP

The FTP server and client let you specify the TCP window sizes to use during an FTP transfer. The value to be used is determined as follows:

If...

Then use...

The logical name MULTINET_FTP_WINDOW_SIZE is defined

Its equivalence string as the value.

The /WINDOW_SIZE qualifier is specified with  FTP [/SERVER]

The value specified with the qualifier.

A value is specified with [SITE] WINDOW-SIZE size

The value specified.

 

If none of these criteria exist, then use the default value 32768.

In all cases, the value must be between NET_MIN_TCPWINDOW and NET_MAX_TCPWINDOW (presently 512 and 1073741824, respectively). The size of the send and receive buffers is set to the specified value.

 

File Name Translations

When you issue an FTP GET command to a host running the UNIX operating system and you do not specify an output file name, the resulting VMS file name can contain unexpected characters. These characters occur because the UNIX operating system has case-sensitive characters and special symbols that require conversion before they can be used with VMS.

You can use the /FDL qualifier with the FTP client GET and PUT commands for compatibility with HP’s TCP/IP Services for OpenVMS (formerly UCX). When you create a file with the PUT /FDL qualifier, a file description language (FDL) file is created at the same time as the original file. The contents of the original file are transmitted in IMAGE (binary) mode.

The FDL file has the same name except that FDL is appended to the file name extension.

An example of the PUT command is:

host>PUT /FDL AFILE.TXT BFILE.TXT
<ASCII Store of USERS:[ME]BFILE.TXTFDL;1 started.
<Transfer completed.  888 (8) bytes transferred.
<IMAGE Store of USERS:[ME]BFILE.TXT;1 started.
<Transfer completed.  6 (8) bytes transferred.

This command copies AFILE.TXT to BFILE.TXT on the system to which you are connected, then creates another file, BFILE.TXTFDL.

The BFILE.TXTFDL file is in ASCII format and resembles:

IDENT   " 15-MAR-2016 17:13:24   VAX/VMS FDL$GENERATE Routine"
SYSTEM
            SOURCE               VAX/VMS
FILE        ALLOCATION           5
            BEST_TRY_CONTIGUOUS  no
            BUCKET_SIZE          0
            CONTIGUOUS           no
            DEFERRED_WRITE       no
            EXTENSION            0
            GLOBAL_BUFFER_COUNT  0
            MT_BLOCK_SIZE        512
            MT_PROTECTION        32
            MAX_RECORD_NUMBER    0
            MAXIMIZE_VERSION     no
            NAME                 "USERS:[ME]AFILE.TXT;1"
            ORGANIZATION         sequential
            OWNER                [STAFF,ME]
            PROTECTION           (system:RWED, owner:RWED,group:,world:)
            READ_CHECK           no
            SUPERSEDE            no
            WRITE_CHECK          no
RECORD      BLOCK_SPAN           yes
            CARRIAGE_CONTROL     carriage_return
            CONTROL_FIELD_SIZE   0
            FORMAT               variable
            SIZE                 0

The newly created BFILE.TXT file is in raw block format which is not easily readable. When you use the GET /FDL command to retrieve the file, the original format is restored using the attributes stored in the FDL file. If you do not use the /FDL qualifier with the GET command, the new raw block format is retained.

In all instances, the FDL file is retained and must be deleted independently.

Notes:

·         The FTP server /TYPE=EBCDIC qualifier is no longer supported.

·         If you invoke FTP from the DCL command line and a password string is case-sensitive, use the following format for the command:

$ FTP /USER=username /PASSWORD="""MiXedCAse"""

If you do not use quotation marks, MultiNet converts the password to lowercase.

·         If you replaced the FTP_SERVER.COM file, you must add /ACCESS=NOSPAWN on "captive" accounts such as the ANONYMOUS account so that users cannot spawn commands. Spawning commands from such accounts opens a potential security hole.

·         When transferring files between OpenVMS systems, do not use the BINARY command except when the desired output requires fixed, 512-byte records; most importantly, do not use BINARY on Process Software ECO save sets that you acquired with FTP, if you are using FTP from a MultiNet system.

The following table shows how UNIX printable file name characters are translated into VMS file names:

VMS           Server      Hex

Character   Char.        Value

VMS             Server    Hex

Character     Char.      Value

VMS             Server      Hex

Character     Char.        Value 

$4A      ^A       1

$5A       !       21

$7A       Space    20

$4B      ^B       2

$5B       “       22

$7B       ;        3B

$4C      ^C       3

$5C       #       23

$7C       <        3C

$4D      ^D       4

$5E       %       25

$7D       =        3D

$4E      ^E       5

$5F       &       26

$7E       >        3E

$4F      ^F       6

$5G       ‘       27

$7F       ?        3F

$4G      ^G       7

$5H       (       28

 

$4H      ^H       8

$5I       )       29

$8A       @        40

$4I      ^I       9

$5J       *       2A

$8B       [        5B

$4J      ^J       A

$5K       +       2B

$8C       \        5C

$4K      ^K       B

$5L       ,       2C

$8D       ]        5D

$4L      ^L       C

$5N       .       2E

$8E       ^        5E

$4M      ^M       D

$5O       /       2F

 

$4N      ^N       E

$5Z       :       3A

$9A       ‘        60

$4O      ^O       F

$

$9B       {        7B

$4P      ^P       10

$6A       ^@      00

$9C       |        7C

$4Q      ^Q       11

$6B       ^[      1B

$9D       }        7D

$4R      ^R       12

$6C       ^\      1C

$9E       ~        7E

$4S      ^S       13

$6D       ^]      1D

$9F       DEL      7F

$4T      ^T       14

$6E       ^^      1E

 

$4U      ^U       15

$6F       ^-      1F

 

$4V      ^V       16

 

 

$4W      ^W       17

 

 

$4X      ^X       18

 

 

$4Y      ^Y       19

 

 

$4Z      ^Z       1A

 

 

 

·         International characters in the range of octal 200 to 377 are translated as a dollar sign ($) followed by the three-digit octal value for the character.

·         Directory names copied to VMS are appended with the .DIR suffix.

·         The dot (.) character is treated as a special case. The first occurrence in a file name is interpreted explicitly as a dot; the next occurrences are translated into the $5N character sequence shown in the previous table. In a directory name, all occurrences of the dot character are translated into the $5N character sequence.

·         A dollar sign followed by a letter indicates that the case should be shifted from its current state.

An example of file name translation occurs when a UNIX file called foo.bar#1.old is copied to   the VMS system. The resulting VMS file name is FOO.BAR$5C1$5NOLD. If the file was a directory, the translated name would be FOO$5NBAR$5C1$5NOLD.DIR. If the UNIX file name was Foo.BAr#1.old, the translated case-sensitive VMS file name would be $F$OO.$BA$R$5C1$5NOLD.

 

Listing the Contents of a File

You can use the GET command to list the contents of a file as follows:

$ GET filename TT:

This command displays a list of the files on your terminal, and works with all FTP servers.

 

Working with Directories

When you open a connection to a remote host and log in, your default directory is set to your login directory on the remote system. If you log in as another user, your default directory is set to that user's login directory. You can find out the path name of this directory with the command:

FTP>PWD

 You can list the contents of your current working directory on the remote host with the command:

FTP>DIR

You can change the working directory on the remote host to remote_directory with the command:

FTP>CD remote_directory

To change the working directory on the local host to local_directory, use the command:

FTP>LCD local_directory

 

Commands for Copying Files

The GET and PUT commands are the two basic commands for copying files between your system and a remote host. The GET command copies a single file from the remote host to your system. The PUT command copies a single file from your system to the remote host. These commands have the following format:

FTP>GET remote_file local_file
FTP>PUT local_file remote_file

Under OpenVMS, the GET and PUT commands create new files. For other operating systems, the file is only created if it does not exist; if the file exists, an error displays. The AGET and APUT commands can be used to append to an existing file. These two commands have the following format:

FTP>AGET remote_file local_file
FTP>APUT local_file remote_file

The GET and PUT commands copy single files. Their counterparts, MGET and MPUT, copy multiple files. The format of these commands is similar, but not identical, to that of GET and PUT:

FTP>MGET remote_file
FTP>MPUT local_file

In these two commands, you specify the file names with wildcard specifications. For MGET, use the file name wildcard syntax for the remote host. For MPUT, use the OpenVMS file name wildcard syntax. The files retain their original names when they are copied. An MGET to an empty directory returns a status code of 552 from the FTP server.

 

Parameters for Copying Files

Transfer parameters define how a file should be copied. The three transfer parameters and their values are described in the following list:

STRUCTURE

Defines the structure of files to be transferred; takes one of the following values:

FILE

An unstructured byte stream. This is the default when communicating with systems that do not understand the OpenVMS structure described in the FTP VMS Structure section.

RECORD

A file that is partitioned into records.

VMS

An arbitrary OpenVMS file; allows for transparent transfer of any RMS file between cooperating systems.

 

Note! The "VMS" transfer structure is automatically negotiated between systems that support it. After connecting to a remote system, the MultiNet FTP utility sends the FTP command "STRU O  VMS" to the FTP server. If the server responds positively, both sides use the "VMS" structure to ensure total transparency when transferring files (that is, all RMS record and file attributes are retained). If the server responds negatively, both sides default to the "FILE" transfer structure.

 

FTP VMS Structure

TYPE

Defines the contents of files to be transferred; takes one of the following values:

ASCII

A file consisting of ASCII characters (the default).

BACKUP

Like IMAGE, but causes the local file to be written with 2048-byte fixed length records; used for transferring OpenVMS BACKUP savesets.

IMAGE

A binary image.

LOGICAL-BYTE

Used for doing binary transfers with TOPS-20 systems.

 

MODE

Defines how the file should be transferred; takes one of the following values:

COMPRESSED

Run length-encoded compression.

STREAM

Normal data transfer (the default).

 

FTP commands copy files using the current transfer parameters. When you first start FTP, the default transfer parameters are FILE structure, ASCII type, and STREAM mode. VMS structure is used if the FTP Server supports it. Use the following commands to change the transfer parameters from their defaults:

FTP>TYPE type_name
FTP>STRUCTURE struct_name
FTP>MODE mode_name

There are a number of command synonyms for the TYPE and STRUCTURE commands; see Appendix B for a complete list.

 

FTP Commands While a Transfer is in Progress

Control characters entered during an FTP file transfer have the following effects:

Press...

 To

Ctrl/G

Send an abort command to the remote server, thus aborting a data transfer.

Ctrl/A

Display the state and progress of the file transfer.

Ctrl/P

Suspend the transfer and spawn a new DCL subprocess. The file transfer will continue upon return to the FTP program from the spawned DCL subprocess.

 

Aborting a file transfer does not work correctly with servers that do not support the ABOR (abort) command. If attempted, the connection to the server may be lost.

 

Issuing FTP Commands From the DCL Command Line

You usually run the FTP utility by typing the FTP command then issuing additional commands once the program starts. If you are only interested in transferring one file, or issuing a single FTP     command, you can specify the command on the DCL command line. See MULTINET FTP in Appendix A for the complete DCL command syntax.

For example, if you wish to retrieve the file pub/hack.c via anonymous login to the host      EXAMPLE.COM, you might issue the DCL command:

$ FTP /USER=ANONYMOUS /PASSWORD=GUEST EXAMPLE.COM GET pub/hack.c hack.c

To get a listing of the pub directory on this same system, you would use the command:

$ FTP /USER=ANONYMOUS /PASSWORD=GUEST EXAMPLE.COM DIR pub

If you want to retrieve all files in the pub directory and copy them to your current directory on your local system, you might use the command:

$ FTP /USER=ANONYMOUS /PASSWORD=GUEST EXAMPLE.COM MGET pub/*

 

FTP Command Scripts

FTP commands are usually entered directly from the keyboard. You can, however, execute a predefined sequence of FTP commands by redirecting standard input (SYS$INPUT) interactively, or from within a DCL command procedure.

The following example shows an interactive session that uses a predefined command script, in this case in the file FTP.COM, to control FTP:

$ FTP /TAKE=FTP.COM

The following example shows a sample FTP.COM file. The italicized comments are provided only to explain each line in the FTP.COM file; do not include them in the actual file!

SET EXAMPLE.COM /USER:BOOJUM /PASS:SNARK   Set user & password
CONNECT EXAMPLE.COM                        Open connection
GET FOO.BAR NEWFOO.BAR                     Execute an FTP command
EXIT                                       Conclude session

The following example shows a DCL command procedure that runs FTP to get the file FOO.BAR from the remote host EXAMPLE.COM.

$! FTP DCL command procedure
$ FTP
SET EXAMPLE.COM /USER:BOOJUM /PASS:SNARK
CONNECT EXAMPLE.COM
GET FOO.BAR NEWFOO.BAR
EXIT
$! continue with any other commands

 

Ending an FTP Session

Once you have finished with your FTP session, you can either break the connection with the remote system while still remaining in FTP command mode, or you can log out from the remote host, exit FTP, and return to DCL.

To close the current connection without terminating in FTP, enter the command:

FTP>BYE
FTP>

To close the connection and return to DCL, enter the command:

FTP>EXIT
$

 

Using FTP over TLS (FTPS)

The FTP client can use FTP over TLS as specified in RFC 4217.   Use the AUTHENTICATE command before the USER command to start a session with a secure command stream.   The PROTECTION PRIVATE command can then be used to set file transfers to be encrypted.  The CCC command will return the command stream to clear text mode, which is often necessary when traversing a firewall.  The FTP client can also be started with /AUTHENTICATE=TLS to automatically enter TLS authentication after connection to the remote system.

 

FTP Log Files

The MultiNet FTP Server keeps a log of all FTP transactions that occur between the client and server after login in the file FTP_SERVER.LOG in the login directory on the server system. The following sample log file contains the FTP transactions involved in a user logging in under the user name SMITH, issuing a DIRECTORY command, and then retrieving the file FOO.BAR.

Note! If the MultiNet FTP server process does not start or mysteriously disappears, examine the beginning of the FTP_SERVER.LOG file for any error messages.

Because the system-wide login command procedure (SYS$MANAGER:SYLOGIN.COM) and the user's LOGIN.COM are executed as part of the server process creation, any errors in these procedures can cause the server process to die suddenly. In most instances, however, the reason for the process terminating will appear at the beginning of the FTP_SERVER.LOG file.

-------------------------------------------------------
FTP Login request received at Tue Mar 16 15:30:27 2016
         from remote IP address 127.0.0.1
-------------------------------------------------------
>>> 230 User SMITH logged into U1:[SMITH] at Tue 16-Mar-04 15:30, job 3a.
<<< TYPE A
>>> 200 Type A ok.
<<< STRU F
>>> 200 Stru F ok.
<<< MODE S
>>> 200 Mode S ok.
<<< PORT 127,0,0,1,4,14
>>> 200 Port 4.14 at Host 127.0.0.1 accepted.
<<< LIST
>>> 150 List started.
>>> 226 Transfer completed.
<<< PORT 127,0,0,1,4,15
>>> 200 Port 4.15 at Host 127.0.0.1 accepted.
<<< RETR foo.bar
>>> 150 ASCII retrieve of USERS:[SMITH]FOO.BAR;1 started (210 bytes).
>>> 226 Transfer completed.  210 (8) bytes transferred.
<<< QUIT
>>> 221 QUIT command received. Goodbye.
SMITH job terminated at  16-MAR-2016 15:31:23.08

 

Anonymous FTP

Many system managers use anonymous FTP to allow network access to files of general interest on their system, without having to assign a user name to each user who wants access to the files. Anonymous FTP means that the ANONYMOUS login is created on a system to permit anyone access to that system. When using anonymous FTP, connect to the remote system as you would normally, but instead of specifying your user name, specify the user name anonymous and the password guest. In many implementations, you are restricted to read-only access of the files in a certain directory or a certain directory tree.

Note! While many systems allow you to use any password, some systems only allow anonymous FTP access with the password guest. Many systems prefer you to enter your e-mail address (username@host) instead of the guest password; either method works. Also, specify the anonymous user name in lowercase, as many systems (primarily those running UNIX) support case-sensitive user names. Hence, anonymous and ANONYMOUS are considered different user names, and only the former can be used for anonymous FTP access.

 

Transferring Files From Behind a Firewall

The MultiNet FTP Client PASSIVE command allows a range of control of the PASV directive for transferring files from FTP servers when your system is located behind a "firewall" gateway. The list of parameters and an explanation of how they work follows:

·         an ON parameter (the default setting)

·         an OFF parameter

·         a NEGOTIATED parameter

·         a /PASV DCL qualifier, allows you to specify the PASSIVE command setting as you start up the FTP Client (at the FTP> prompt, you may specify either PASSIVE or PASV; the two are interchangeable)

Note! If the change in the default setting causes you problems or changes the way things have worked for you in the past, you may control the default setting for your site by putting the appropriate PASSIVE command in the file MULTINET:FTP.INIT.

With PASSIVE mode ON, the Client sends the PASV directive to the server, instructing it to wait for the client to make the data connection. If the server does not understand the PASV command, the connection is aborted. The default for PASSIVE is ON to help facilitate transfers through a firewall. Under certain conditions, this default might cause problems. Use the MultiNet FTP client logical MULTINET_FTP_NONPASV to turn off the PASSIVE mode default or use the passive command on the command line. When you define this logical, passive mode is not used as the default.

With PASSIVE mode OFF, the FTP client expects the FTP server to establish the connection over which data is transferred. (Note that this may not work through firewalls as some FTP servers do not support the PASSIVE command.)

With PASSIVE mode NEGOTIATED, the FTP client sends the PASV command as with PASSIVE mode ON, but switches the mode to OFF if the FTP server generates an error in response.

The /NONPASV, /PASV, and /PASV=NEGOTIATE qualifiers allow you to specify each of the PASSIVE mode settings as you start up the FTP client.

When an IPv6 connection is in use the FTP client sends the EPSV command instead of the PASV command.  All user commands and behavior described above remain the same.

 

FTP Initialization File

On startup, FTP executes commands in the FTP.INIT file in your login directory (if the file exists), to allow you to customize your FTP sessions. The below table lists commands you may find useful to have in your FTP.INIT file.

BELL ON

Rings the terminal bell when a file transfer operation is completed.

EXIT-ON-ERROR ON

Causes FTP to exit after any error occurs.

HASH ON

Prints a pound sign (#) for each data buffer transferred.

PROMPT-FOR-MISSING-ARGUMENTS OFF

Disables FTP prompting for missing command line arguments.

PROMPT-ON-CONNECT ON

Automatically prompts for user name and password when a connection to the remote system is established.

SET host /USERNAME:username   [/PASSWORD:password]

Sets the default user name or default user name and password for the specified host. If you place SET commands containing passwords in your FTP.INIT file, be careful to protect the file from access by others.

STATISTICS ON

Upon completion of file transfers, displays transfer timing statistics.

VERBOSE ON

Displays all responses from the remote FTP server as they are received.

 

If you invoke FTP with the /NOINITIALIZATION qualifier, the FTP.INIT file is not processed.

The commands in the above table are more completely documented in Appendix B.

 

Troubleshooting FTP

As the first step in any FTP troubleshooting, check the FTP_SERVER_LOG file for error messages.

 

General Troubleshooting Tips

If the logged information does not help, check the following:

1.       Make sure the FTP server is running on the remote system.

2.       Ping the FTP server to make sure it is available through the network.

3.       If the remote host is on the other side of a firewall, try Passive Mode.

4.       Make sure you entered the correct user name and password for the remote system.

 

Transmitted Files Are Corrupt

If you can copy files, but the files are corrupted after transmission, verify that you are using the       correct transfer mode - ASCII or binary. Use ASCII mode for text files and binary mode for executable files, compressed files, graphics files, and any other non-text files. Use Logical-Byte mode if the remote system does not use the standard 8-bit byte.

 

Copying Files Using TFTP

Like the FTP, TFTP copies files between your system and a remote host. Unlike FTP, you cannot perform operations other than copying files between your system and a remote one (you cannot list directories, delete files, and so on). Also, TFTP does not perform any authentication when transferring files, so a user name and password on the remote host are not required. In general, only files with world read (W:R) access in certain directories on the remote host are available for reading, and only certain directories are available for writing.

Note! TFTP does not check the permissions of directories before attempting to access them. Because the TFTP protocol does not specify any user login or validation, the remote system will probably have some sort of file-access restrictions. The exact restrictions are site-specific and thus cannot be documented here.

The mail option of TFTP, as defined in RFC-783, is obsolete and not supported under the MultiNet TFTP server.

 

Requirements for TFTP

When you copy a file from a remote host, it must be world-readable (W:R). When copying a file to a remote host:

·         A file of the same name must already exist on the remote host.

·         The file must be world-writable (W:W).

If these two conditions are not met, TFTP will fail.

 

Using TFTP

To start TFTP, enter the following command:

$ tftp remote_host
tftp>

remote_host is the name of the remote system with which you want to transfer files.

To transfer a file from your system to a remote host, enter a TFTP command in the following format:

tftp>put local_file remote_file

 

local_file

Identifies the file you are transferring.

remote_file

Specifies the name you want the file to have on the remote system. If you specify a file name, it must be an absolute path name (device, directory, and file name). If you do not specify a file name, it defaults to the same name as local_file.

 

For example, suppose you want to transfer the file user:[boojum]accts.log from your system to the file /x/boojum/accts.log on the remote host sales.example.com. To do this, you would enter the following commands:

$ tftp sales.example.com
tftp>put user:[boojum]accts.log /x/boojum/accts.log

Both the directory /x/boojum and the file accts.log must already exist on the remote host, and accts.log must be world-writable.

To transfer a file to your system from a remote host, issue a TFTP command in the following format:

$ tftp sales.example.com
tftp>get remote_file local_file

local_ file

Specifies the name you want the file to have on your system. If you do not specify a file name, it defaults to the same name as the remote_file.

remote_file

Identifies the file you want to transfer from the remote host. You must supply an absolute path name (device, directory, and file name).

 

For example, suppose you want to transfer the file /x/boojum/accts.log from the remote host sales.example.com to the file user:[boojum]accts.log on the your system. To do this, you would enter the following commands:

$ tftp sales.example.com
tftp>get /x/boojum/accts.log user:[boojum]accts.log

The file /x/boojum/accts.log must be world-readable.