The Kermit Project
|
Now hosted by
Panix.com
New York City USA
•
kermit@kermitproject.org
…since
1981
|
Frank da CruzAlso see: C-Kermit 10.0 command reference
The Kermit Project
Most recent update: Wed Feb 28 08:55:47 2024
"Text-mode" means it is to be used in a Unix shell, VMS console session, etc, in the manner that most software was used during the timesharing era, approximately mid-1970s to mid-1990s, and which is still used today by software developers, system administrators, website authors, and old diehards. Until 2011, C-Kermit was free but with some licensing restrictions. Since 2011 it is 100% Open Source, and since 2022 the Windows version is also free and Open Source.
C-Kermit is cable of making many different kinds of connections, including direct serial-port, dialup modem, and Intenet. On the Internet C-Kermit can make secure SSH connections and (if you can find servers for them), secure Telnet and FTP connections too.
C-Kermit can be:
And perhaps most important, everything you can do by hand (interactively) with C-Kermit, can be automated using its built-in cross-platform transport-independent script programming language. CLICK HERE for an introduction to Kermit script programming.
Over the years, C-Kermit was available for a large variety of operating systems and variants (and still is), but the vast proliferation of different computers and OS's of the 1980s-90s has dwindled to just a handful today, primarily Unix (Linux, Mac OS, BSD, etc), (Open)VMS, and Microsoft Windows. C-Kermit 10.0 is available for all of these.
$ kermit (/current/directory) C-Kermit>
Begin by typing "help" (and then press the Return or Enter key) for a top-level overview, read it, and go from there. Your second command should probably be "intro" (introduction). Note the prompt shows your current directory (unless you tell Kermit to prompt you with something else).
Interactive commands are composed mainly of regular English words, usually in the form of imperative sentences, such as:
send somefile.txt
which tells Kermit to send (transfer) the file whose name is
set transfer mode automatic
which sets Kermit's "transfer mode" to "automatic" (whatever that means).
While typing commands, you can abbreviate, ask for help (by pressing the
"
Use question mark to feel your way through an unfamiliar command, as in this example (the part you type is underlined):
C-Kermit> remote ? One of the following: assign delete help login print rename space cd directory host logout pwd rmdir type copy exit kermit mkdir query set who C-Kermit> remote set ? One of the following: attributes file retry transfer block-check receive server window C-Kermit> remote set file ? One of the following: character-set incomplete record-length collision names type C-Kermit> remote set file names ? One of the following: converted literal C-Kermit> remote set file names literal C-Kermit>
This is called menu on demand: you get a menu when you want one, but
menus are not forced on you even when know what you're doing. Note that you
can also abbreviate most keywords, and you can complete them with the Tab or
Esc key. Also note that
C-Kermit has hundreds of commands, and they can be issued in infinite variety and combinations, including commands for:
And of course QUIT or EXIT to get out and HELP to get help, and for programmers: loops, decision making, variables, arrays, associative arrays, integer and floating point arithmetic, macros, built-in and user-defined functions, string manipulation, pattern matching, block structure, scoping, recursion, and all the rest. To get a list of all C-Kermit's commands, type a question mark (?) at the prompt. To get a description of any command, type HELP followed by the name of the command, for example:
help send
The command interruption character is Ctrl-C (hold down the Ctrl key and press the C key).
The command language "escape character", used to introduce variable names,
function invocations, and so on, is backslash (
get c:\\k95\\k95custom.iniIt also introduces variable names and calls to built-in functions.
(/current/dir) C-Kermit> take commandfile
(where "commandfile" is the name of the command file).
In Unix only, a Kermit command file can also be executed directly by including a "kerbang" line as the first line of the file:
#!/usr/local/bin/kermit +
That is, a top line that starts with "
chmod +x commandfile
Except for the " +" part, this is exactly the same as you would do for a shell script, a Perl script, etc. Here's a simple but useless example script that regurgitates its arguments (up to three of them):
#!/usr/local/bin/kermit + if defined \%1 echo "Argument 1: \%1" if defined \%2 echo "Argument 2: \%2" if defined \%3 echo "Argument 3: \%3" if defined \%4 echo "etc..." exit
If this file is stored in your current directory as "commandfile", then:
./commandfile one two three four five
prints:
Argument 1: one Argument 2: two Argument 3: three etc...
This illustrates the basic structure of a standalone Kermit script: the
"kerbang line", then some commands. It should end with "exit" unless you
want the Kermit prompt to appear when it is finished.
You can also create your own commands by defining named macros composed of other Kermit commands (or macros). Here's a simple example:
define mydial { set modem type usrobotics set port /dev/ttyS0 if fail end 1 set speed 57600 dial \%1 if success connect }
This shows how you can combine many commands into one command, "mydial" in this case (you can use any name you like, provided it does not clash with the name of a built-in command). When this macro definition is in effect, you can type commands like:
mydial 7654321
and it executes all the commands in macro definition, substituting the
first operand ("7654321") for the formal parameter ("
One way to have the macro definition in effect is to type the definition at the Kermit prompt. Another way is to store the definition in a file and TAKE the file. If you want the definition to be in effect automatically every time you start Kermit, put the definition in your initialization file (explained below).
Here's a somewhat more ambitious example:
define mydelete { local trash if not defined \%1 end 1 "Delete what?" assign trash \v(home)trashcan/ if wild \%1 end 1 "Deleting multiple files is too scary" if not exist \%1 end 1 "I can't find \%1" if not directory \m(trash) { mkdir \m(trash) if fail end 1 "No trash can" } rename /list \%1 \m(trash) } define myundelete { local trash assign trash \v(home)trashcan/ if not defined \%1 end 1 "Undelete what?" if wild \%1 end 1 "Undeleting multiple files is too hard" if not directory \m(trash) end 1 "No trash can" if not exist \m(trash)\%1 end 1 "I can't find \%1 in trash can" rename /list \m(trash)\%1 . }
These macros are not exactly production quality (they don't handle filenames that include path segments, they don't handle multiple files, etc), but you get the idea: you can pass arguments to macros, they can check them and make other kinds of decisions, and the commands themselves are relatively intuitive and intelligible.
If you put the above lines into your initialization file, you'll have MYDELETE and MYUNDELETE commands available every time you start Kermit, at least as long as you don't suppress execution of the initialization file. (Exercise for the reader: Make these macros generally useful: remove limitations, add trashcan display, browsing, emptying, etc.)
Kerbang scripts execute without the initialization file. This to keep them portable and also to make them start faster. If you want to write Kerbang scripts that depend on the initialization file, include the command
at the desired spot in the script. By the way,take \v(home).kermrc (Unix example; see table for others)
Optional fields are shown in [ brackets ]
filename means the name of a single file. filespec means a file
specification that is allowed to contain wildcard characters like
'
send /recursive /larger:10000 /after:-1week /except:*.txt *
which can be read as "send all the files in this directory and all the ones
underneath it that are larger than 10000 bytes, no more than one week old,
and whose names don't end with "
In the following [ brackets ] indicate optional fields
and { xxx, yyy, zzz }
indicates a list of choices.
Many of Kermit's commands have synonyms, variants, relatives, and so on. For
example, MSEND is a version of SEND that accepts a list of file specifications
to be sent, rather than just one file specification, and MPUT is a synonym of
MSEND. MOVE means to SEND and then DELETE the source file if successful.
MMOVE is like MOVE, but accepts a list of filespecs, and so on. These are
described in the full documentation.
The other computer is remote, so if you start another copy of Kermit on the
remote computer, it is said to be in Remote mode (as long as it has
not made any connections of its own). The local Kermit communicates with it
over the communications device or network connection, acting as a conduit
between the the remote computer and your keyboard and screen. The remote
Kermit is the file-transfer partner to the local Kermit and communicates
only through its standard input and output.
At any moment, a Kermit program can be in any of the following states. It's
important to know what they are and how to change from one to the other.
You can exit from Command state back to Unix with the EXIT or QUIT command
(same thing). You can enter Connect state with any of various commands
(SSH, CONNECT, DIAL, TELNET, etc). You can enter file transfer state with
commands like SEND, RECEIVE, and GET. You can enter Server state with the
SERVER command. The TAKE command tells Kermit to read and execute commands
from a file. The (perhaps implied) DO command tells Kermit to read and
execute commands from a macro definition. While in Command state, you can
interrupt any command, macro, or command file by typing Ctrl-C (hold down
the Ctrl key and press the C key); this normally brings you back to the
prompt.
To send a Ctrl-
Kermit returns to its previous state (Command or Connect) when the
transfer is complete or when interrupted successfully by X, Z, E, or
Ctrl-C (hold down the Ctrl key and press the C key).
C-Kermit, Kermit 95, and MS-DOS Kermit all can switch automatically from
Connect state to Local File-transfer state when you initiate a file transfer
from the remote computer by starting Kermit and telling it to send or get a
file, in which case, Connect state is automatically resumed after the file
transfer is finished, unless there was an error, in which case it stays in
its file transfer screen so you can see what the error was.
Note that (except on Windows and OS/2) C-Kermit is not a terminal emulator.
It is a communications application that you run in a terminal window
(e.g. console or Xterm). The specific emulation, such as VT100, VT220,
Linux Console, or Xterm, is provided by the terminal window in which you are
running C-Kermit. Kermit 95 and MS-DOS Kermit, on the other hand, are true
terminal emulators.
Why is C-Kermit not a terminal emulator?
CLICK HERE
to read about it.
In Unix and VMS, SSH connections are not built-in, but handled by running
your external SSH client through a pseudoterminal. Using C-Kermit to
control the SSH client gives you all of Kermit's features (file transfer,
character-set conversion, scripting, etc) over SSH.
More info: HELP SSH, HELP SET SSH.
If the connection is successful, Kermit automatically enters Connect state.
When you logout from the remote host, Kermit automatically returns to its
prompt. More info: HELP TELNET, HELP SET TELNET, HELP SET TELOPT.
Also see the IKSD section below.
More info: HELP RLOGIN.
Type "set modem type ?" for a list of supported modem types. If you omit the
SET MODEM TYPE command, the default type is "generic-high-speed", which should
work for most modern AT-command-set modems. If the line is busy, Kermit
redials automatically. If the call does not succeed, use "set dial display
on" and try it again to watch what happens. If the call succeeds, Kermit
enters Connect state automatically and returns to its prompt automatically
when you log out from the remote computer or the connection is otherwise lost.
You can also dial from a modem that is accessible by Telnet, e.g. to a
reverse terminal server. In this case the command sequence is:
If the terminal server supports the Telnet Com Port Option,
RFC 2217, you can also
give serial-port related commands such as SET SPEED, SET PARITY, and so on,
and Kermit relays them to the terminal server using the protocol specified
in the RFC.
More info: HELP SET MODEM, HELP SET LINE, HELP SET SPEED, HELP SET FLOW, HELP
DIAL, HELP SET DIAL, HELP SET MODEM, HELP SET CARRIER-WATCH, SHOW
COMMUNICATIONS, SHOW MODEM, SHOW DIAL.
This assumes Computer B is set up to let you log in. If it isn't, you
can run a copy of Kermit on Computer B and follow approximately the
same directions. More info: As above plus HELP CONNECT.
With modems or direct serial connections, you might also have to "set parity
even" (or "mark" or "space") if it's a 7-bit connection.
Of the connection types listed above, only one can be open at a time.
However, any one of these can be open concurrently with an FTP
or HTTP session. Each connection type can be customized to any desired
degree, scripted, logged, you name it. See the
manual.
NOTE: On selected platforms, C-Kermit also can make X.25 connections. See
the manual for details.
There is a
widespread and
persistent belief that Kermit is a slow protocol. This is because, for
its first decade or so (1980-1990), it used conservative tuning by default
to make sure file transfers succeeded, rather than failing because they
overloaded the connection. Some extra commands (or command-line options,
like
Furthermore, all three of these Kermit programs support "autodownload" and
"autoupload", meaning that when they are in Connect state and a Kermit
packet comes in from the remote, they automatically switch into file
transfer mode.
And plus, C-Kermit and K95 also switch automatically between text and
binary mode for each file, so there is no need to "set file type binary"
or "set file type text", or to worry about files being corrupted because they
were transferred in the wrong mode.
What all of these words add up to is that now, when you use up-to-date
Kermit software from the Kermit Project, file transfer is not only fast,
it's ridiculously easy. You barely have to give any commands at all.
(where
and/or you can use wildcards to send groups of files:
If you want to send a file under an assumed name, use:
This sends the file
This causes your local Kermit to enter server mode; then the remote Kermit
program requests the named file and the local Kermit sends it and returns
automatically to Connect state when done.
If you want to upload multiple files, you have have use shell quoting rules,
since these aren't local files:
If you want to upload a file but store it under a different name, use:
To download a file, type:
on the host as before, but if nothing happens automatically in response to
this command, you have to switch your desktop communications software into
Kermit Receive state. This might be done by escaping back using keyboard
characters or hot keys (Alt-x is typical) and/or with a command (like RECEIVE)
or a menu. When the file transfer is complete, you have to go back to Connect
state, Terminal emulation, or whatever terminology applies to your desktop
communications software.
To upload a file, type:
on the host (rather than "
Obviously the success and performance of a file transfer also depends on
C-Kermit's file transfer partner. Up-to-date, real
Kermit Project partners are
recommended because they contain the best Kermit protocol implementations.
If you still have trouble, consult Chapter 10 of
Using
C-Kermit,
or send email to
support@kermitproject.org.
On a regular serial or Telnet connection where the other computer doesn't
support Kermit protocol at all, you have several options. For example, if
your desktop communications software supports Zmodem, use "rz" and "sz" on the
host rather than Kermit. But if Kermit is your desktop software, and
you are using it to make calls or network connections to other computers that
don't support Kermit protocol (or that don't have a good implementation of
it), then if your computer also has external X, Y, or Zmodem programs that are
redirectable, Kermit can use them as external protocols. HELP SET PROTOCOL
for details.
You can also capture "raw" data streams from the other computer with LOG
SESSION (HELP LOG and HELP SET SESSION-LOG for details), and you can upload
files without any protocol at all with TRANSMIT (HELP TRANSMIT, HELP SET
TRANSMIT).
By default Kermit's FTP client tries its best to present the same user
interface as a regular FTP client: PUT, GET, DIR, CD, BYE, etc, should work
the same, even though some of these commands have different meaning in
Kermit-to-Kermit connections; for example, CD, DIR, RENAME, etc, in Kermit act
locally, whereas in FTP they are commands for the server. This might cause
some confusion, but as in all things Kermit, you have total control:
The Kermit FTP client is thoroughly documented at the Kermit Project
website:
You also can use HELP FTP and HELP SET FTP to get descriptions of Kermit's
FTP-related commands.
The HTTP client is similar to the FTP one, except you prefix each command with
HTTP instead of FTP: HTTP OPEN, HTTP GET, HTTP PUT, HTTP CLOSE, etc. Type
HELP HTTP for details, or visit the to view the
manual supplements. HTTP connections can be open at the same time as
regular serial or Telnet connections and FTP connections. So Kermit can
manage up to three types connections simultaneously.
The IKSD command is equivalent to a TELNET command specifying port 1649.
For more information about making and using connections to an IKSD, see:
You can run an Internet Kermit Service on your own computer too (if you are
the system administrator). For instructions, see:
For complete instructions see:
And as noted previously, you can also make SSH connections with C-Kermit if
you already have an SSH client installed.
Kermit's command-line personality changes to match. This can
be done (among other ways) with symbolic links (symlinks). For example, if
you want C-Kermit to be your regular Telnet client, or the Telnet helper of
your Web browser, you can create a link like the following in a directory that
lies in your PATH ahead of the regular telnet program:
Now when you give a "telnet" command, you are invoking Kermit instead, but
with its Telnet command-line personality so, for example:
Makes a Telnet connection to xyzcorp
Similarly for FTP:
And now type "
but with additional options allowing an entire session to be specified
on the command line, as explained in the C-Kermit
FTP client
documentation.
And similarly for HTTP:
Finally, if Kermit's first command-line option is a Telnet, FTP, IKSD, or HTTP
URL, Kermit automatically makes the appropriate kind of connection and, if
indicated by the URL, takes the desired action:
If the first command-line argument is the name of a file, interactive-mode
commands are executed from the file. The '
Order of execution:
Some command-line options can cause actions (such as
C-Kermit has three kinds of commands: regular single-letter command-line
options, extended-format command-line options, and interactive commands.
Like most Unix commands, C-Kermit can be be given options on the command line.
But C-Kermit also can be used interactively by giving it commands composed of words, which are more intuitive than
cryptic command-line options, and more flexible too. In other words, you
don't have to use C-Kermit's command-line options, but they are available if
you want to. (By the same token, you don't have to use its interactive
commands either -- you can use either or both in any combination.)
C-Kermit is generally installed in the PATH as "kermit", and therefore is
invoked by typing the word "kermit" (lowercase) at the shell prompt, and then
pressing the Return or Enter key. If you wish to include command-line
options, put them after the word "kermit" but before pressing Return or Enter,
separated by spaces, for example:
('
Here is a list of C-Kermit's single-letter command-line options, which start
with a single dash (
Extended command-line options (necessary because single-letter ones are about
used up) start with two dashes (
Plus several other IKSD-Only options.
See the file-transfer section for examples
of command-line invocation.
There you will also find
Kermit software
packages for other platforms:
different Unix varieties, Windows, DOS, VMS, IBM mainframes, and many
others: 20+ years' worth.
The C-Kermit home page is here:
Visit this page to learn about new versions, Beta tests, and other news;
to read case studies and tutorials; to download source code, and for
installation packages for different platforms. Also visit:
Requests top-level help.
Requests help about the given command.
Requests a brief introduction to C-Kermit.
Displays the C-Kermit software copyright and license.
Displays C-Kermit's version number.
Exits from Kermit with the given status code.
Synonyms: QUIT, E, Q.
Executes commands from the given file.
Executes commands from the given macro.
Sets the given parameter to the given value.
Shows settings in a given category.
Tells whether previous command succeeded or failed.
Shows current date-time or interprets given date-time.
Runs the given external command. Synonym:
Kermit overlays itself with the given command.
(Unix only) Stops Kermit and puts it in the background.
Synonym:
Displays the contents of the given file.
Equivalent to
Equivalent to
Displays the first few lines of a given file.
Displays the last few lines of a given file.
Displays lines from files that match the pattern.
Synonym: FIND.
Lists files (built-in, many options).
Lists files (runs external "ls" command).
Deletes files. Synonym: RM.
Removes backup (
Copies files. Synonym: CP.
Renames files. Synonym: MV.
Changes permissions of files.
Converts file's character set = TRANSLATE, XLATE.
Changes your working directory to your home directory.
Changes your working directory to the one given.
Changes your working directory one level up.
Displays your working directory.
Returns to your previous working directory.
Creates a directory.
Removes a directory.
Opens the named serial port.
Synonym: SET PORT.
Same as SET LINE.
Synonym: OPEN PORT.
Tells Kermit what kind of modem is on the port.
Tells Kermit to dial the given phone number with the modem.
Redials the most recently dialed phone number.
Waits for and answers an incoming call on the modem.
Performs secure authentication on a TCP/IP connection.
Selects network type for subsequent SET HOST commands.
Opens a network connection to the given host and port.
Waits for an incoming TCP/IP connection on the given port.
Opens a Telnet connection to the host and enters Connect
state.
Opens an Rlogin connection to the host and enters Connect
state.
Opens a connection to an Internet Kermit Service.
Opens an SSH connection to the host and enters Connect state.
Opens an FTP connection to the host.
Opens an HTTP connection to the host.
Runs the command on a pseudoterminal as if it were a
connection.
Runs the command through a pipe as if it were a
connection.
Enters Connect (terminal) state. Synonym: C.
Redirects the given external command over the connection.
Sends a Telnet protocol command (Telnet connections only).
"Escapes back" from Connect state to Command state.
(In Connect state)
Sends a BREAK signal (serial or Telnet).
(In Connect state)
Enters inferior shell; "exit" to return.
(In Connect state)
Shows a menu of other escape-level options.
(In Connect state)
Type two Ctrl-Backslashes to send one of them.
Changes Kermit's Connect-state escape character.
Hangs up the currently open serial-port or network connection.
Closes the currently open serial-port or network connection.
Closes the currently open serial-port or network connection.
Closes the currently open serial-port or network connection.
Closes the currently open FTP connection.
Closes the currently open HTTP connection.
Also closes all connections.
Synonym: QUIT.
Suppresses warning about open connections on exit or close.
Sends the given file. Synonym: S.
Sends all files that match.
Resumes an interrupted SEND from the point of failure.
Waits passively for files to arrive. Synonym: R.
Keeps a record of file transfers.
Use fast file-transfer settings (default).
Use cautious and less fast file-transfer settings.
Use ultra-conservative and slow file-transfer settings.
Gives statistics about the most recent file transfer.
After transfer: "Where did my files go?".
Sends file without protocol.
Synonym: XMIT.
Captures remote text or files without protocol.
Tells Kermit to use the named external file-transfer protocol.
FTP client commands.
HTTP client commands.
Controls which features can be used by clients.
Sets parameters prior to entering Server state.
Enters Server state.
Logs in to a Kermit server or IKSD that requires it.
Logs out from a Kermit server or IKSD.
Sends the given file to the server. Synonyms: S, PUT.
Sends all files that match.
Resumes an interrupted SEND from the point of failure.
Asks the server to send the given files. Synonym: G.
Resumes an interrupted GET from the point of failure.
Asks server to change its working directory.
Synonym: RCD.
Asks server to display its working directory.
Synonym: RPWD.
Asks server to send a directory listing.
Synonym: RDIR.
Asks server to delete files.
Synonym: RDEL.
(Many other commands: "
Sends file(s) to be delivered as e-mail (Kermit only).
Asks the server to exit server state (Kermit only).
Asks the server to log out and close the connection.
INITIALIZATION FILE
When you start C-Kermit, it executes commands from an
initialization file in your home directory unless it is given the
Your initialization file can contain any Kermit commands at all, as well as
comments. A typical use would be to define macros that you want to be able
to execute whenever you're using C-Kermit. To remind you that it's being
executed you might want to include a line like this in it:
Platform
Filename
Location
Unix (Linux, BSD, macOS, etc)
.kermrc
Your home (login) directory
MS Windows
k95custom.ini
\v(appdata) (your application data directory)
IBM OS/2
k2custom.ini
\v(appdata) (your application data directory)
VMS, OpenVMS
ckermit.ini
Your home (login) directory
Other
ckermit.ini
Your home (login) directory
echo C-Kermit \v(fullversion) executing \v(cmdfile)...
MODES OF OPERATION
Kermit is said to be in Local mode if it has made a connection to
another computer, e.g. by dialing it or establishing an SSH or Telnet
connection to it. Think of "local" as meaning "where you are". The local
Kermit is the one you're using directly.
"Ctrl-\x" means "Hold down the Ctrl (Control) key and press the
backslash key, then press the '
Unix, VMS
Ctrl-
Windows, OS/2
Ctrl-
Interrupt the current file and go on to the next (if any).
Interrupt the current file and skip all the rest.
Like Z but uses a "stronger" protocol (use if X or Z don't
work).
Interrupt file-transfer mode (use if Z or E don't work).
MAKING CONNECTIONS
Here is how to make different kinds of connections using interactive Kermit
commands (you can also make connections with command-line options). Note
that you don't have to make connections with Kermit. It can also be
used on the far end of a connection as the remote file transfer and
management partner of your local communications software.
ssh foo.bar.com ; Substitute desired host name or address.
telnet foo.bar.com ; Substitute desired host name or address.
telnet xyzcorp.com 3000 ; You can also include a port number.
rlogin foo.bar.com ; Substitute desired host name or address.
set modem type usrobotics ; Or other supported type
set line /dev/ttyS0 ; Specify device name
set speed 57600 ; Or other desired speed
set flow rts/cts ; Most modern modems support this
set dial method tone ; (or pulse)
dial 7654321 ; Dial the desired number
set host ts.xxx.com 2000 ; Terminal-server and port
set modem type usrobotics ; Or other supported type
set dial method tone ; (or pulse)
dial 7654321 ; Dial the desired number
set modem type none ; There is no modem
set line /dev/ttyS0 ; Specify device name
set carrier-watch off ; If DTR and CD are not cross-connected
set speed 57600 ; Or other desired speed
set flow rts/cts ; If RTS and CTS are cross-connected
set flow xon/xoff ; If you can't use RTS/CTS
set parity even ; (or "mark" or "space", if necessary)
set stop-bits 2 ; (rarely necessary)
connect ; Enter Connect (terminal) state
TRANSFERRING FILES WITH KERMIT
kermit -s somefile.txt
kermit -s somefile.txt somefile.zip somefile.html somefile.tar.gz
kermit -s somefile.*
kermit -s friday.txt -a today.txt
kermit -g somefile.txt
kermit -g "somefile.txt somefile.zip somefile.html somefile.tar.gz"
kermit -g "somefile.*"
kermit -g friday.txt -a today.txt
kermit -s filename
kermit -r
KERMIT CLIENT/SERVER CONNECTIONS
On any kind of connection you can make with Kermit -- serial, TCP/IP,
X.25, etc -- you can set up a convenient client/server relationship between
your Kermit client (the one that made the connection) and the Kermit program
on the far end of the connection (the remote Kermit) by putting the remote
Kermit in server mode. This is normally done by giving it a SERVER
command, or by starting it with the
The following commands are affected by SET LOCUS:
There are dozens -- maybe hundreds -- of other commands, described in the
built-in help, on the website, and/or in the published or online manuals.
But even if you don't have access to documentation, you can "set locus
remote" and then use pretty much the same commands you would use with any
FTP client.
KERMIT'S BUILT-IN FTP AND HTTP CLIENTS
Kermit's FTP client is like the regular Unix FTP client that you're
used to, but with some differences:
https://kermitproject.org/ftpclient.html
INTERNET KERMIT SERVICE
C-Kermit can be configured and run as an Internet service (called IKSD),
similar to an FTP server (FTPD) except you can (but need not) interact with it
directly, plus it does a lot more than an FTP server can do. The TCP port for
IKSD is 1649. It uses Telnet protocol. C-Kermit can be an Internet Kermit
Server, or it can be a client of an IKSD. You can make connections from
C-Kermit to an IKSD with any of the following commands:
telnet foo.bar.edu 1649
telnet foo.bar.edu kermit ; if "kermit" is listed in /etc/services
iksd foo.bar.edu
https://kermitproject.org/cuiksd.html
https://kermitproject.org/iksd.html
SECURITY
All of C-Kermit's built-in TCP/IP networking methods (Telnet, Rlogin,
IKSD, FTP, and HTTP) can be secured by one or more of the following
IETF-approved methods:
https://kermitproject.org/security.html
ALTERNATIVE COMMAND-LINE PERSONALITIES
When invoked as "kermit" or any other name besides any of the special ones,
C-Kermit has the command-line options described above in the
OPTIONS section. However, if you invoke C-Kermit using
any of the following names:
ln -s /usr/local/bin/kermit telnet
telnet xyzcorp.com
ln -s /usr/local/bin/kermit ftp
ftp -n xyzcorp.com
ln -s /usr/local/bin/kermit http
./http -h
./http kermitproject.org -g kermit/index.html
kermit telnet:xyzcorp.com ; Opens a Telnet session
kermit telnet://olga@xyzcorp.com ; Ditto for user olga
kermit ftp://olga@xyzcorp.com/public/somefile.zip ; Downloads a file
kermit kermit://kermit.columbia.edu/kermit/f/READ.ME ; Ditto for IKSD
kermit iksd://kermit.columbia.edu/kermit/f/READ.ME ; (This works too)
kermit https://kermitproject.org/index.html ; Grabs a web page
kermit https://wwws.xyzcorp.com/secret/plan.html ; Grabs a secure web page
COMMAND-LINE OPTIONS
Usage:
Or:
Bear in mind that C-Kermit can be built with selected features disabled, and
also that certain features are not available on all platforms. For example,
C-Kermit can't be built with TCP/IP support on a platform that does not have
TCP/IP header files and libraries (and even if Kermit does include TCP/IP
support, it can't be used to make TCP/IP connections on a computer that does
not have a TCP/IP stack installed). If your version of C-Kermit lacks a
feature mentioned here, use its SHOW FEATURES command to see what might have
been excluded.
$ kermit -s ckermit.tar.gz
Option
Action?
Description
N
(digit zero) 100% transparent Connect state for "in-the-middle"
operation: 8 bits, no parity, no escape character, everything passes through.
N
(digit eight) Connection is 8-bit clean (this is the
default in C-Kermit 9.0 and later). Equivalent to the EIGHTBIT command,
which in turn is a shortcut for SET TERMINAL BYTESIZE 8, SET COMMAND
BYTESIZE 8, SET PARITY NONE.
N
(digit nine) Make a connection to an FTP server.
Equivalent to the FTP OPEN command.
Argument:
IP-address-or-hostname[
NOTE: C-Kermit also has a separate FTP command-line personality,
with regular FTP-like command-line syntax.
More about this below.
N
Kermit is to be started as an Internet service (IKSD) (only from
N
Kermit is running in Batch or Background
(no controlling terminal).
To be used in case Kermit doesn't automatically sense its background status.
Equivalent to the SET BACKGROUND ON command.
N
Interactive-mode Commands to be executed.
Argument: Commands separated by commas, list in doublequotes.
N
Delay before starting to send in Remote mode.
Equivalent to the SET DELAY command.
Argument: Number of seconds.
N
Exit automatically when connection closes.
Equivalent to SET EXIT ON-DISCONNECT ON.
N
Use an open TCP connection.
Argument: Numeric file descriptor of open TCP connection.
Also see:
Y
Get file(s) from server, send contents to standard output,
which normally would be piped to another process.
Argument: Remote file specification, in quotes if it contains
metacharacters.
Also see:
N
Suppress program startup Herald and greeting.
N
Tell Kermit it has a reliable connection, to force streaming
to be used where it normally would not be. Equivalent to the SET RELIABLE
ON command.
N
"Be like Telnet."
Like
Argument: IP hostname/address optionally followed by service.
NOTE: C-Kermit also has a separate Telnet
command-line personality, with regular Telnet-like command-line syntax.
More about this below.
N
Recursive directory descent for files in
N
My user name (for use with Telnet, Rlogin, FTP, etc).
Equivalent to the SET LOGIN USER command.
Argument: Username string.
Y
(Uppercase letter O) Be a server for One command only.
Also see:
N
Don't convert file (Path) names of transferred files.
Equivalent to SET FILE NAMES LITERAL.
N
Quick Kermit protocol settings. Equivalent to the FAST
command. This is the default in C-Kermit 7.0 and later.
N
Remote-only (this just makes IF REMOTE true).
N
Stay (enter command parser after action options).
N
Force Text mode for file transfer; implies
N
Disable automatic per-file text/binary switching.
Equivalent to SET TRANSFER MODE MANUAL.
N
Skip (don't execute) the initialization file.
N
As-name for file(s) in
Argument: As-name string (alternative filename).
When receiving files, this can be a directory name.
N
Speed for serial device. Equivalent to SET SPEED.
Argument: Numeric Bits per second for serial connections.
Y
Enter Connect state before transferring files.
N
Create a
N
Maximum length for incoming Kermit file-transfer packets.
Equivalent to SET RECEIVE PACKET-LENGTH.
Argument: Length in bytes.
Y
Send a FINISH command to a Kermit server.
N
Get file(s) from a Kermit server.
Argument: File specification on other computer, in quotes if it
contains metacharacters. Equivalent to GET.
Also see:
Y
Print Help text for single-letter command-line options
(pipe thru 'more' to prevent scrolling).
N
Force binary (Image) mode for file transfer; implies
N
Make a TCP/IP connection.
Argument: IP host name/address and optional service name or number.
Equivalent to the TELNET command.
Also see:
Y
Receive file(s) to standard output, which normally would be
piped to another process.
Also see:
N
(Lowercase letter L)
Make a connection on the given serial communications device. Equivalent
to the SET LINE (SET PORT) command.
Argument: Serial device name, e.g.
N
Modem type for use with the
Argument: Modem name as in SET MODEM TYPE command, e.g. "usrobotics".
Y
Enter Connect state after transferring files (historical).
N
Parity. Equivalent to the SET PARITY command.
Argument: One of the following: e(ven), o(dd), m(ark), n(one), s(pace).
N
Quiet (suppress most messages). Equivalent to SET QUIET ON.
Y
Receive file(s). Equivalent to the RECEIVE command.
Argument: (none, but see
N
Send file(s).
Argument: One or more local file specifications. Equivalent to the
SEND command.
Also see:
N
(Historical) Xon (Ctrl-Q) Turnaround character for
half-duplex connections (used on serial linemode connections to old
mainframes). Equivalent to SET DUPLEX HALF, SET HANDSHAKE XON.
N
Window size for Kermit protocol (ignored when streaming).
Equivalent to SET WINDOW-SIZE.
Argument: Number, 1 to 32.
N
Incoming files Write over existing files. Equivalent to
SET FILE COLLISION OVERWRITE.
Y
Enter server mode. Equivalent to the SERVER command.
Also see:
N
Alternative initialization file.
Argument: Filename.
N
Force foreground behavior.
To be used in case Kermit doesn't automatically sense its foreground status.
Equivalent to the SET BACKGROUND OFF command.
Option
Description
File to display upon startup or IKSD login.
File to be sent for display to the client when server changes directory
(filename is relative to the changed-to directory).
Enable/disable the server CD message feature.
Prints usage message for extended options.
Designates a file containing custom text to replace the top-level
HELP command.
Disables keyboard interrupts.
Disables the Kermit protocol file Permissions attribute, to prevent
transmission of file permissions (protection) from sender to receiver.
LICENSE
On June 28, 2011, C-Kermit 9.0 was released
with the Revised 3-Clause BSD
License. This is a certified Open Source license, and it
means that C-Kermit no longer needs to be licensed for commercial
redistribution. Technical support for Kermit software is not available
from Columbia University after June 30th, 2011.
OTHER TOPICS
There's way more to C-Kermit than we've touched on here -- troubleshooting,
customization, character sets, dialing directories, sending pages, script
writing, and on and on, all of which are covered in the manual and updates and
supplements. For the most up-to-date information on documentation (or updated
documentation itself) visit the Kermit Project website:
https://kermitproject.org/
DOCUMENTATION AND UPDATES
The manual for C-Kermit is:
Online Supplementary Material
https://kermitproject.org/ckermit.html