The Kermit Project   |   Now hosted by
New York City USA   •
…since 1981

The Kermit FTP Client - Secure Scriptable FTP

The Hudson River seen from Harlem, NYC
Looking across the Hudson River from West 125th Street NYC


This page has been translated into Spanish language by María Ramos from


C-Kermit 8.0 and later for UNIX (including Linux, Solaris, AIX, HP-UX, FreeBSD, NetBSD, Tru64, QNX, SCO, IRIX, and all others for which TCP/IP-capable C-Kermit versions are presently available) and Kermit 95 2.0 (for Windows 95, 98, ME, NT, 2000, XP, Vista, 7, ...) include a built-in FTP client that offers the following advantages over traditional FTP clients:

C-Kermit 9.0.304 Dev.12 (12 January 2015) fixes a bug in the GET command (used for downloading files FTP protocol as well as in Kermit protocol) that could cause the program to crash on Unix-based platforms that either do not have UUCP (such as QNX and Mac OS X) or in any C-Kermit version that was built with the -DNOUUCP compile-time option.
Any of Kermit's security methods can be used to establish and conduct secure FTP sessions with FTP servers that support these methods: Kerberos 4, Kerberos 5 / GSSAPI, SSL, TLS, or SRP. Due to recent relaxations in USA export law, Kermit's security methods are more widely available than they were in previous releases. Secure FTP servers are available from the sources listed in the security document. Sites such as IBM Information Exchange are beginning to require secure FTP connections.

NOTE: The security features are optional. They do not have to be included in the Kermit program, and if they are, you don't have to use them (unless the server requires secure connections). You can use C-Kermit as an FTP client without using the security features, just as you use the regular Unix FTP client, if the server allows it.

Why use FTP instead of SSH/SCP/SFTP? Because (a) FTP is inherently platform-neutral, and works everywhere, not just on Unix and Windows; (b) FTP handles cross-platform text-file transfer; (c) Kerberos and SSL/TLS are more secure than SSH since they provide for revocation of compromised identities (CLICK HERE for a thorough discussion).

FTP sessions are fully scriptable using Kermit's normal script programming language, which includes status indicators, user-defined and built-in variables, arrays, and functions; block structure, loops, decision-making, pattern matching, string operations, file i/o, integer and floating-point arithmetic, scoping, recursion, and all the rest, plus access to internal FTP protocol messages and codes. Previously, UNIX-based FTP clients could be automated only by cumbersome and error-prone methods such as piping commands into their standard input (which does not allow for testing results, decision-making, looping, etc), or Expect scripts (which don't know anything about the connection itself or the FTP protocol and its messages and result codes, relying only upon prompts and text messages from the FTP client for status, which can vary with every client/server combination and even from one session to the next). CLICK HERE for an introduction to C-Kermit's FTP command and scripting language.
NOTE: The fact that FTP sessions can be scripted does not mean you have to script them. You can also conduct FTP sessions interactively, or for that matter, also completely from the shell command line. You don't have to know or learn anything about programming to use the C-Kermit FTP client unless you want to write automated procedures.

Firewall Traversal
Kermit's SET TCP HTTP-PROXY and SET HTTP SOCKS-SERVER commands allow access to otherwise inaccessible services (e.g. FTPS) through HTTP or SOCK proxy servers.

Character Sets
Character sets can be translated as part of the transfer process even when the FTP server does not support character-set translation (as most do not), including to/from the new Internet standard international character set, Unicode UTF-8. Translation can be done for both filenames and for the contents of text files.

Automatic Per-File Text/Binary Mode Switching
The correct file type, "ascii" (i.e. text) or binary, is chosen automatically (unless you go out of your way to prevent it). In a multi-file transfer (MPUT or MGET), any mixture of text and binary files can be transferred in a single operation, even between unlike platforms.

Atomic File Movement
Atomic file movement operations are provided (delete, move, or rename files automatically upon successful transfer).

Flexible File Selection
All of C-Kermit's file-selection mechanisms are available: name patterns and lists, exception lists, type, size, and/or date, e.g. "send all the files whose names match one of these patterns, except for any files whose names match any of these other patterns, that are between 100K and 200K in length and were last modified between these two dates, and that are text files."

Update and Recovery Modes
Update mode (don't bother transferring files that didn't change since last time) and recovery (resumption of an interrupted transfer from the point of failure) are available in both directions.

File Permissions
When uploading files from Unix to Unix, the file's permissions can be preserved if desired.

File Dates
When downloading files, each received file can have its modification date/time set from the server file.

Directory-Tree Transfers
Recursive directory-tree MPUTs are supported to any platform that has a tree-structured file system (such as UNIX, VMS, Windows). Recursive MGETs are supported between like platforms if the server cooperates.

File Collision Options
When receiving files, all of Kermit's file collision actions are available: backup (existing file), update (refuse incoming file if not newer), refuse (incoming file), rename (incoming file), append (incoming file to existing file), and overwrite (existing file).

Multi-file transfers can be manually interrupted on a per-file basis, automatically skipping to the next file. Of course the entire batch can be canceled too.

Pipes and Filters
Kermit can upload from the standard output of an external command and download to the standard input of an external command, and it can pass outbound and incoming files through standard i/o filters of your choosing.

Dual Sessions
An FTP session can be open at the same time as a Telnet or serial-port (or dialout) session; a single script can control them both.

Copes Better with Firewalls
Kermit's FTP client uses "passive mode" by default to minimize blockage by firewalls and network address translators.

Friendly Command Interface
All of Kermit's interactive command features are available for FTP too: keyword menus, abbreviation, and completion; filename menus and completion; command recall, command macros, command files, command shortcuts, and built-in help text.

Command-Line Control
An entire FTP session (connect, login, CD, upload or download, logout) can be specified on the shell command line without using interactive commands or a script.

URL Control
A file or file group can be retrieved from an FTP server simply by specifying an FTP URL on the command line.

Logging and Feedback
All of Kermit's logging options and formats are available to keep an accurate and complete record of each connection and file transfer, and to aid in troubleshooting. All of Kermit's file-transfer display options are available too: fullscreen, brief, CRT, serial, none.

And best of all:

It's Less Aggravating
Kermit doesn't give you those annoying per-file prompts every time you start a multi-file transfer without remembering to give a "prompt" command first :-) And you don't have to worry about transferring files in the wrong mode (text or binary).


[ Top ] [ FTP Client documentation ] [ C-Kermit Home ] [ Kermit 95 Home ] [ Kermit Home ]

The Kermit Project / / 27 September 2011 / Last update: 12 January 2015