DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

ftp(TC)


ftp -- Internet file transfer program

Syntax

ftp [ -Adginptv ] [ host ]

Description

ftp is the user interface to the Internet standard File Transfer Protocol. The program allows a user to transfer files to and from a remote network site. Options may be specified at the command line, or to the command interpreter.

-A
suppress automatic AUTH command on login for servers that do not support this feature (and the connection).

-d
Enable debugging.

-g
Disable filename globbing.

-i
Turn off interactive prompting during multiple file transfers.

-n
Restrain ftp from attempting auto-login upon initial connection. If auto-login is enabled, ftp will check the .netrc (see below) file in the user's home directory for an entry describing an account on the remote machine. If no entry exists, ftp will prompt for the remote machine login name (default is the user identity on the local machine), and, if necessary, prompt for a password and an account with which to login.

-p
Enable passive mode ftp access.

-t
Enables packet tracing. This option is not currently implemented.

-v
Verbose; forces ftp to show all responses from the remote server, as well as report on data transfer statistics. Normally, this is on by default, unless the standard input is not a terminal.
The client host with which ftp is to communicate may be specified on the command line. If this is done, ftp will immediately attempt to establish a connection to an FTP server on that host; otherwise, ftp will enter its command interpreter and await instructions from the user. ftp displays the prompt ftp> when it is awaiting commands from the user.

Client commands

There are separate FTP client and server command sets, as requests from the client invoke commands on the server. However, individual client commands may not correspond directly to server commands; the names may be different or single client commands may invoke multiple server commands. Under some circumstances, server commands can be invoked directly from the client; see the ftp quote and site commands below.


NOTE: While the minimum set of FTP server commands is defined by RFCs 959 (STD 9) and 1123, there is considerable variation in server implementations, particularly with regard to supported commands. See the ftpd(ADMN) manual page concerning the SCO OpenServer implementation.

The following commands are recognized by the ftp client:


! [ command [ args ]]
Invoke an interactive shell on the local machine. If there are arguments, the first is taken to be a command to execute directly, with the rest of the arguments as its arguments.

$ macro-name [ args ]
Execute the macro macro-name that was defined with the macdef command. Arguments are passed to the macro unglobbed.

account [ passwd ]
Supply a supplemental password required by a remote system for access to resources once a login has been successfully completed. If no argument is included, the user will be prompted for an account password in a non-echoing input mode.

append local-file [ remote-file ]
Append a local file to a file on the remote machine. If remote-file is left unspecified, the local filename is used in naming the remote file after being altered by any ntrans or nmap setting. File transfer uses the current settings for type, format, mode, and structure.

ascii
Set the file transfer type to network ASCII. This is the default type.

bell
Arrange that a bell be sounded after each file transfer command is completed.

binary
Set the file transfer type to support binary image transfer.

bye
Terminate the FTP session with the remote server and exit ftp. An end of file will also terminate the session and exit.

case
Toggle remote computer filename case mapping during mget commands. When case is on (default is off), remote computer filenames with all letters in uppercase are written in the local directory with the letters mapped to lowercase.

cd remote-directory
Change the working directory on the remote machine to remote-directory.

cdup
Change the remote machine working directory to the parent of the current remote machine working directory.

chmod [ mode ] [ remote-file ]
Change file permissions of remote file.

clear
Do not create encrypted checksums to include in the data packets.

close
Terminate the FTP session with the remote server, and return to the command interpreter. Any defined macros are erased.

cr
Toggle carriage return stripping during ASCII type file retrieval. Records are denoted by a carriage return/linefeed sequence during ASCII type file transfer. When cr is on (the default), carriage returns are stripped from this sequence to conform with the UNIX single linefeed record delimiter. Records on non-UNIX remote systems may contain single linefeeds; when an ASCII type transfer is made, these linefeeds may be distinguished from a record delimiter only when cr is off.

delete remote-file
Delete the file remote-file on the remote machine.

debug [ debug-value ]
Toggle debugging mode. If an optional debug-value is specified, it is used to set the debugging level. When debugging is on, ftp prints each command sent to the remote machine, preceded by the string ``-->''.

dir [ remote-directory ] [ local-file ]
Print a listing of the directory contents in the directory, remote-directory, optionally placing the output in local-file. If interactive prompting is on, ftp will prompt the user to verify that the last argument is the target local file for receiving dir output. If no directory is specified, the current working directory on the remote machine is used. If no local file is specified, or local-file is -, output comes to the terminal.

disconnect
Same as close.

form format
Set the file transfer form to format. The default format is file.

get remote-file [ local-file ]
Retrieve the remote-file and store it on the local machine. If the local filename is not specified, it is given the same name it has on the remote machine, subject to alteration by the current case, ntrans, and nmap settings. The current settings for type, form, mode, and structure are used while transferring the file.

glob
Toggle filename expansion for mdelete, mget, and mput. If globbing is turned off with glob, the filename arguments are taken literally and not expanded. Globbing for mput is done as in sh(C). For mdelete and mget, each remote filename is expanded separately on the remote machine and the lists are not merged. Expansion of a directory name is likely to be different from expansion of the name of an ordinary file: the exact result depends on the foreign operating system and ftp server, and can be previewed by doing mls remote-files -.
Note that mget and mput are not meant to transfer entire directory subtrees of files. That can be done by transferring a tar(C) archive of the subtree (in binary mode).

hash
Toggle hash-sign (#) printing for each data block transferred. The size of a data block is BUFSIZ bytes. BUFSIZ is defined in stdio.h.

help [ command ]
Print an informative message about the meaning of command. If no argument is given, ftp prints a list of the known commands.

idle
Get/set idle timer on the remote machine.

image
Same as binary.

lcd [ directory ]
Change the working directory on the local machine. If no directory is specified, the user's home directory is used.

ls [ remote-directory ] [ local-file ]
Print an abbreviated listing of the contents of a directory on the remote machine. The listing includes any system-dependent information that the server chooses to include; for example, most UNIX systems will produce output from the command ls -l. (See also nlist.) If remote-directory is left unspecified, the current working directory is used. If interactive prompting is on, ftp will prompt the user to verify that the last argument is the target local file for receiving ls output. If no local file is specified, or if local-file is -, the output is sent to the terminal. Additional options may be specified by quoting the arguments (for example, ls "-rt dir", will cause a time sorted listing of directory dir to be displayed if the remote operating system is UNIX-type).

macdef macro-name
Define a macro. Subsequent lines are stored as the macro macro-name; a null line (consecutive newline characters in a file or carriage returns from the terminal) terminates macro input mode. There is a limit of 16 macros and 4096 total characters in all defined macros. Macros remain defined until a close command is executed. The macro processor interprets ``$'' and ``\'' as special characters. A ``$'' followed by a number (or numbers) is replaced by the corresponding argument on the macro invocation command line. A ``$'' followed by an ``i'' signals to the macro processor that the executing macro is to be looped. On the first pass, ``$i'' is replaced by the first argument on the macro invocation command line, on the second pass it is replaced by the second argument, and so on. A ``\'' followed by any character is replaced by that character. Use the ``\'' to prevent special treatment of the ``$''.

mdelete [ remote-files ]
Delete the remote-files on the remote machine.

mdir remote-files local-file
Like dir, except multiple remote files may be specified. If interactive prompting is on, ftp will prompt the user to verify that the last argument is the target local file for receiving mdir output.

mget remote-files
Expand the remote-files on the remote machine and do a get for each filename thus produced. See glob for details on the filename expansion. Resulting filenames will then be processed according to case, ntrans, and nmap settings. Files are transferred into the local working directory, which can be changed with lcd directory; new local directories can be created with ! mkdir directory.

mkdir directory-name
Make a directory on the remote machine.

mls remote-files local-file
Like nlist, except multiple remote files may be specified, and the local-file must be specified. If interactive prompting is on, ftp will prompt the user to verify that the last argument is the target local file for receiving mls output.

mode [ mode-name ]
Set the file transfer mode to mode-name. The default mode is ``stream'' mode.

modtime file-name
Show the last modification time of the file on the remote machine.

mput local-files
Expand wildcards in the list of local files given as arguments and do a put for each file in the resulting list. See glob for details of filename expansion. Resulting filenames will then be processed according to ntrans and nmap settings. The mput command does not allow remote filenames to be specified.

newer remote-file [ local-file ]
Get file if remote file is newer than local file.

nlist [ remote-directory ] [ local-file ]
Print a list of the files of a directory on the remote machine. If remote-directory is left unspecified, the current working directory is used. If interactive prompting is on, ftp will prompt the user to verify that the last argument is indeed the target local file for receiving nlist output. If no local file is specified, or if local-file is -, the output is sent to the terminal. Additional options may be specified by quoting the arguments (for example, nlist "-rt dir", will cause a time sorted listing of directory dir to be displayed if the remote operating system is UNIX).

nmap [ inpattern outpattern ]
Set or unset the filename mapping mechanism. If no arguments are specified, the filename mapping mechanism is unset. If arguments are specified, remote filenames are mapped during mput commands and put commands issued without a specified remote target filename. If arguments are specified, local filenames are mapped during mget commands and get commands issued without a specified local target filename. This command is useful when connecting to a non-UNIX remote computer with different filenaming conventions or practices. The mapping follows the pattern set by inpattern and outpattern. Inpattern is a template for incoming filenames (which may have already been processed according to the ntrans and case settings). Variable templating is accomplished by including the sequences $1, $2, ..., $9 in inpattern. Use ``\'' to prevent this special treatment of the ``$'' character. All other characters are treated literally, and are used to determine the nmap inpattern variable values. For example, given inpattern $1.$2 and the remote filename mydata.data, $1 would have the value ``mydata'', and $2 would have the value ``data''. The outpattern determines the resulting mapped filename. The sequences $1, $2, ..., $9 are replaced by any value resulting from the inpattern template. The sequence ``$0'' is replaced by the original filename. Additionally, the sequence [seq1,seq2] is replaced by seq1 if seq1 is not a null string; otherwise it is replaced by seq2. For example, the command nmap $1.$2.$3 [$1,$2].[$2,file] would yield the output filename myfile.data for input filenames myfile.data and myfile.data.old, myfile.file for the input filename myfile, and myfile.myfile for the input filename .myfile. Spaces may be included in outpattern, as in the example:

nmap $1 |sed "s/ *$//" > $1 .

Use the ``\'' character to prevent special treatment of the ``$'', ``['', ``]'', and ``,'' characters.


ntrans [ inchars [ outchars ] ]
Set or unset the filename character translation mechanism. If no arguments are specified, the filename character translation mechanism is unset. If arguments are specified, characters in remote filenames are translated for mput commands and put commands that are issued without a specified remote target filename. If arguments are specified, characters in local filenames are translated for mget commands and get commands that are issued without a specified local target filename. This command is useful when connecting to a non-UNIX remote computer with different filenaming conventions or practices. Characters in a filename matching a character in inchars are replaced with the corresponding character in outchars. If the character's position in inchars is longer than the length of outchars, the character is deleted from the filename.

open host [ port ]
Establish a connection to the specified host FTP server. An optional port number may be supplied, in which case, ftp will attempt to contact an FTP server at that port. If the auto-login option is on (default), ftp will also attempt to automatically log the user in to the FTP server (see below).

prompt
Toggle interactive prompting. Interactive prompting occurs during multiple file transfers to allow the user to selectively retrieve or store files. If prompting is turned off (default is on), any mget or mput will transfer all files, and any mdelete will delete all files.

protect clear
Same as clear.

protect safe
Encrypt a checksum of the data in each packet using a session key shared between the ftp and ftpd processes, and include this checksum in the packet. This protects the transferred data from undetected corruption or modification, but it does not prevent eavesdropping (the data is not encrypted, only the checksum).

proxy ftp-command
Execute an ftp command on a secondary control connection. This command allows simultaneous connection to two remote ftp servers for transferring files between the two servers. The first proxy command should be an open, to establish the secondary control connection. Enter the command proxy ? to see other ftp commands executable on the secondary connection. The following commands behave differently when prefaced by proxy: open will not define new macros during the auto-login process, close will not erase existing macro definitions, get and mget transfer files from the host on the primary control connection to the host on the secondary control connection, and put, mput, and append transfer files from the host on the secondary control connection to the host on the primary control connection. Third party file transfers depend upon support of the ftp protocol PASV command by the server on the secondary control connection.

put local-file [ remote-file ]
Store a local file on the remote machine. If remote-file is left unspecified, the local file name is used after processing according to any ntrans or nmap settings in naming the remote file. File transfer uses the current settings for type, format, mode, and structure.

pwd
Print the name of the current working directory on the remote machine.

quit
Same as bye.

quote arg1 arg2 ...
The arguments specified are sent, verbatim, to the remote FTP server, which interprets them as server commands. To list the server commands supported on the remote FTP server, enter quote help (or rhelp); enter quote help command for the syntax of individual remote commands. See also the site command below.

recv remote-file [ local-file ]
Same as get.

reget
Retrieve a file restarting at the end of the local-file.

restart
Restart the transfer of a file from a particular byte-count.

rhelp [ command-name ]
Request help from the remote FTP server. If a command-name is specified, it is supplied to the server as well.

rstatus [ file-name ]
With no arguments, show status of remote-machine. If file-name is specified, show status of file-name on remote machine.

rename [ from ] [ to ]
Rename the file from on the remote machine, to the file to.

reset
Clear reply queue. This command re-synchronizes command/reply sequencing with the remote ftp server. Resynchronization may be necessary following a violation of the ftp protocol by the remote server.

rmdir directory-name
Delete a directory on the remote machine.

runique
Toggle storing of files on the local system with unique filenames. If a file already exists with a name equal to the target local filename for a get or mget command, a .1 is appended to the name. If the resulting name matches another existing file, a .2 is appended to the original name. If this process continues up to .99, an error message is printed, and the transfer does not take place. The generated unique filename will be reported. Note that runique will not affect local files generated from a shell command (see below). The default value is off.

safe
Same as protect safe.

send local-file [ remote-file ]
Same as put.

sendport
Toggle the use of PORT commands. By default ftp will attempt to use a PORT command when establishing a connection for each data transfer. The use of PORT commands can prevent delays when performing multiple file transfers. If the PORT command fails, ftp will use the default data port. When the use of PORT commands is disabled, no attempt will be made to use PORT commands for each data transfer. This is useful for certain FTP implementations which do ignore PORT commands but, incorrectly, indicate they were accepted.

site [ command ]
Perform supported non-standard or UNIX-specific commands on the remote FTP server. site commands are a restricted subset of the server commands available using the quote command. For example (using an SCO OpenServer FTP server):

site chmod 775 filename

Enter site help for a listing of site commands recognized by the remote FTP server; enter site help command for the syntax of individual remote commands. For a description of site commands recognized by the SCO OpenServer FTP server, see the ftpd(ADMN) manual page.


size file-name
Return size of file-name on remote machine.

status
Show the current status of ftp.

struct [ struct-name ]
Set the file transfer structure to struct-name. By default, stream structure is used.

sunique
Toggle storing of files on remote machine under unique filenames. Remote ftp server must support ftp protocol STOU command for successful completion. The remote server will report unique name. Default value is off.

system
Show the type of operating system running on the remote machine.

tenex
Set the file transfer type to that needed to talk to TENEX machines.

trace
Toggle packet tracing. This option is not currently implemented.

type [ type-name ]
Set the file transfer type to type-name. If no type is specified, the current type is printed. The default type is network ASCII.

umask [ mask ]
Set user file-creation mode mask on the remote site. If mask is omitted, the current value of the mask is printed.

user user-name [ password ] [ account ]
Identify yourself to the remote FTP server. If the password is not specified and the server requires it, ftp will prompt the user for it (after disabling local echo). If an account field is not specified, and the FTP server requires it, the user will be prompted for it. If an account field is specified, an account command will be relayed to the remote server after the login sequence is completed if the remote server did not require it for logging in. Unless ftp is invoked with auto-login disabled, this process is done automatically on initial connection to the FTP server.

verbose
Toggle verbose mode. In verbose mode, all responses from the FTP server are displayed to the user. In addition, if verbose is on, when a file transfer completes, statistics regarding the efficiency of the transfer are reported. By default, verbose is on.

? [ command ]
Same as help.
Command arguments which have embedded spaces may be quoted with quote (") marks.

Aborting a file transfer

To abort a file transfer, use the terminal interrupt key (usually <Del>). Sending transfers will be immediately halted. Receiving transfers will be halted by sending a ftp protocol ABOR command to the remote server, and discarding any further data received. The speed at which this is accomplished depends upon the remote server's support for ABOR processing. If the remote server does not support the ABOR command, an ftp> prompt will not appear until the remote server has completed sending the requested file.

The terminal interrupt key sequence will be ignored when ftp has completed any local processing and is awaiting a reply from the remote server. A long delay in this mode may result from the ABOR processing described above, or from unexpected behavior by the remote server, including violations of the ftp protocol. If the delay results from unexpected remote server behavior, the local ftp program must be killed by hand.

File naming conventions

Files specified as arguments to ftp commands are processed according to the following rules.

File transfer parameters

The FTP specification specifies many parameters which may affect a file transfer. The type may be one of ASCII, ``image'' (binary), ``ebcdic'', and ``local byte size'' (for PDP-10 and PDP-20 machines mostly). ftp supports the ASCII and image types of file transfer, plus local byte size 8 for tenex mode transfers.

ftp supports only the default values for the remaining file transfer parameters: mode, form, and struct.

The .netrc file

The .netrc file contains login and initialization information used by the auto-login process. It resides in the user's home directory, and can contain tokens for remote machine name, user login, user password, account password, and macro definition.

Authenticated ftp using Kerberos

ftp allows an authenticated user to transfer files between authenticated hosts (the host where ftp is invoked and the host where the ftpd(ADMN) service daemon is running). Authentication is provided by the SCO Security server, which must have all the relevant principals (hosts and users) listed in its Registry.

Authentication is negotiated when ftp is invoked without the need for user input. If authentication succeeds and the user is authorized, the following message is displayed:

   231 User 'user@realm' is authorized as remoteuser
Entering the status command at the ftp> prompt returns the type of authentication in use. The only type of authentication currently available is KERBEROS_V5.

To connect to the remote host with authenticated ftp without being asked for a password, the user invoking ftp must have network credentials, and the user's principal name must appear in the $HOME/.k5login file on the host where ftpd is running (this file must be writable only by the user or by root, and it must be readable by root in the filesystem where it resides).

Before using authenticated ftp, users must first obtain network credentials using kinit(TC), or by doing an authenticated login.

Limitations

Correct execution of many commands depends upon proper behavior by the remote server.

An error in the treatment of carriage returns in the 4.2BSD UNIX ASCII-mode transfer code has been corrected. This correction may result in incorrect transfers of binary files to and from 4.2BSD servers using the ASCII type. Avoid this problem by using the binary image type.

Authentication is based on Version 5 of the Kerberos Network Authentication Service protocol. Only this version of the protocol is supported.

Data encryption is not supported.

Files


$HOME/.k5login
equivalent users for authenticated ftp

$HOME/.netrc
auto-login initialization information

/krb5/v5srvtab
local default service key table

See also

ftpd(ADMN), k5login(SFF), kinit(TC)

Standards conformance

ftp is not part of any currently supported standard. It is an extension of AT&T UNIX System V provided by The Santa Cruz Operation, Inc.

ftp is conformant with:
RFC 959 (STD 9), RFC 1123


© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003