C-Kermit 6.0 is the current version of Kermit for UNIX (including Linux). It is distributed in source-code form, and there is also a large selection of prebuilt binaries for many platforms. There are also install packages for Red Hat, Debian, and Slackware Linux distributions as well as for other several other kinds of UNIX.However, C-Kermit 6.0 is no longer appropriate for recent Linux releases. Linux has changed significantly out from under C-Kermit 6.0 (which was released in 1996): curses libraries have been renamed and shuffled around, there is the new libc vs glibc issue, serial port access has changed, etc.
We have addressed these issues in C-Kermit 7.0, which is presently in Beta test. So please pick up C-Kermit 7.0 Beta instead. It should build and work correctly on all Linux versions, including the most recent ones, as well as all other known UNIX platforms, plus Plan 9, VMS, and others. You can find it at:
http://www.columbia.edu/kermit/ck70.htmlThere are, as yet, no package/install files (RPM, DEB, etc).
Quick start: Get the cku195.tar.gz file, gunzip it, tar xvf cku195.tar, and then "make linux". The resulting "wermit" file is the C-Kermit 7.0 Beta executable.
Report any problems back to kermit-support@columbia.edu.
C-Kermit is a combined serial and network communication software package offering a consistent, medium-independent, cross-platform approach to connection establishment, terminal sessions, file transfer, character-set translation, and automation of communication tasks. C-Kermit includes:
C-Kermit 6.0 is a major new release of C-Kermit communications for a wide variety of platforms including UNIX (all versions), VMS, QNX, OS-9, Plan 9, the BeBox, Data General AOS/VS, Stratus VOS, the Commodore Amiga, and others. It replaces C-Kermit 5A(190) of October 1994. (Previous releases of C-Kermit also supported the Apple Macintosh, Apollo Aegis, and the Atari ST; these versions are still available, and hopefully they will be brought up to 6.0 level soon.) C-Kermit 6.0 also forms the file-transfer and command / script language basis for Kermit 95 for Windows 95, Windows 98, Windows NT, and OS/2.
All of the new features of C-Kermit 6.0 -- as well as all those added in all releases since 5A(188) -- are completely documented in the new revised and expanded second edition of the Digital Press book, Using C-Kermit.
C-Kermit 6.0 is fully supported
by the Kermit Project help desk and developers:
CLICK HERE for details.
New platforms supported in C-Kermit 6.0 include:
The major new features of C-Kermit 6.0 include:
The biggest change in version 6.0 concerns modems and dialing. In version 6.0, C-Kermit supports:
Version 6.0 supports multiple simultaneous dialing directories, multiple (thousands, even) entries under the same name (so, for example, if the first number is busy, Kermit immediately goes on to the second number, etc), and most of all, a thorough understanding of dialing procedures: country codes, area codes, toll-free calling, calling cards, PBXs, and lots more. This new knowledge about telephone numbers, in turn, allows "cheapest-first" dialing when multiple numbers are fetched from the dialing directory, and it allows dialing directories to be "portable" -- that is, the same entry can be dialed from anywhere -- local, long-distance, international, etc. Old-format directories are converted to new format automatically (if you approve, of course).
The concepts of "dialing" and "modems", which had been lumped together in previous C-Kermit versions, are now cleanly separated. Dialing-related parameters (such as country codes, area codes, repeat dialing, pulse vs tone dialing, etc) are controlled by SET DIAL commands, and modem-related items (like error correction, data compression, speed buffering, flow control, and other modem configuration parameters) are controlled by SET MODEM commands. Every aspect of modem operation can be customized, and new modem types can be added easily. Furthermore, a lot of settings that previously had to be done by hand are now done automatically according to the built-in modem database when you choose a modem type. And modem configurations (e.g. with respect to error correction, data compression, flow-control, etc) follow the Kermit settings automatically.
Modems directly supported in version 6.0 include:
AT&T Dataport AT&T Digital Terminal Data Module AT&T ISN Network AT&T switched-network modems Boca modems Cardinal V.34 CCITT / ITU-T V.25bis Cermetek Info-Mate 212 A Condor CDS 220 2400b DEC DF03-AC DEC DF100-series DEC DF200-series Digitel DT-22 CCITT variant Gateway 2000 Telepath GeneralDataComm 212A/ED Hayes 1200, 2400, and compatible modems Hayes Accura, Optima, and Ultra IBM Mwave Intel Fastalk and Lifestyle MaxTech modems Microlink modems Microcom DeskPorte FAST ES 28.8 Microcom modems in native SX mode Motorola FasTalk II or Lifestyle Multitech modems Penril modems Practical Peripherals modems Racal Vadic VA4492E Rockwell V.32 Rockwell V.32bis Rockwell V.34 Data/Fax Rolm 8000, 9000, 9751 CBX DCM Supra modems Telebit modems, all models USR Courier and Sportster Ven-Tel modems Zoltrix modems Zoom modems ZyXEL modems
In general, C-Kermit is now much more attuned to the world of high-speed modems, much easier to use with them, and much easier for users to tune.
C-Kermit 6.0 is the first version that is able to dial beepers, numeric pagers, and alphanumeric pagers. Pagers can be dialed not only through a modem that is connected to a serial port on the computer where C-Kermit is running, but also through modems mounted on TCP/IP "reverse terminal servers".
Beepers and numeric pagers are dialed using a special form of the DIAL command that does not require the call to be answered with a carrier signal. Alpha pages are sent with a simple script implementing the Telocator Alphanumeric Protocol (TAP) of the Personal Communications Industry Association.
As with other kinds of modem calls, automatic redialing is supported in the case of busy signals, etc, and the dialing directory may be used -- allowing the same pager number to be dialed from different areas or countries without having to enter different phone numbers for each calling location.
During CONNECT mode, C-Kermit for UNIX and VMS (as well as Kermit 95 and MS-DOS Kermit 3.15) now handle not only "autodownloads", but also "autouploads" via automatic recognition of Kermit packets. Auto down- and uploads are disabled by default in the UNIX and VMS versions (to prevent confusion when C-Kermit is "in the middle"), and can be enabled with SET TERMINAL AUTODOWNLOAD ON. When this is ON, and you tell the remote Kermit to SEND a file, C-Kermit goes into RECEIVE mode automatically, and then re-CONNECTs automatically when the transfer is over. The new "autoupload" feature lets you tell the remote Kermit to GET a file; C-Kermit sends it automatically.
During Kermit protocol operations, a new "who am i" mechanism allows the two Kermits furnish their system types (e.g. UNIX, VMS, etc) to each other. If this occurs (as it will with C-Kermit 6.0, Kermit 95 1.1.7, MS-DOS Kermit 3.15, and Kermit-370 4.3.2), and if the two system types match, then the two Kermits automatically switch into binary file-transfer mode with literal filenames (or, in the case of VMS, into labeled transfer mode). Upon exit from protocol, the previous file transfer and naming modes are restored. The other Kermit's system type, if known, is shown on the file transfer display and is also recorded in the transaction log if you have one going. This feature is enabled by default, but can be disabled/enabled explicitly with the new SET TRANSFER MODE { AUTOMATIC, MANUAL } command.
In previous versions of C-Kermit, packet timeouts were fixed at some constant value, like 10 seconds. This could be changed by the user, but it still remained fixed throughout the file transfer. This had two unfortunate consequences:
The new method, which is used unless you specify otherwise, calculates timeouts on a per-packet basis, based on the observed round-trip time (the time from when a packet is sent until its acknowledgement is received) and packet arrival rate. This lets Kermit adjust automatically to prevailing conditions -- slow connections, fast connections, bursty connections -- even if they are always changing, resulting in a minimum of unnecessary retransmissions and the quickest possible response to lost packets. The new fullscreen file transfer display shows the dynamically varying packet round-trip time (RTT) and timeout.
As with timeouts, previous C-Kermit releases left it up to you to find the best packet length. If you chose one that too long, there could be buffer overruns, and expensive retransissions, sometimes hard failures because the specified size was simply too big. If too short, transfers would be needlessly slow.
C-Kermit 6.0 lets you pick a maximum packet size that can be quite large (up to about 9000 bytes), but rather than using that size right away, it starts off smaller and works its way up. If there is an error, it goes back down to the largest size that did not have an error. It repeats this process throughout the transfer to ensure that packets are neither too big nor too small.
C-Kermit's file-transfer performance options -- packet length, window size, control-character unprefixing, locking shifts -- have been refined and tuned for increased throughput, and have been made more easily accessible by the addition of several new commands:
alias "kbs=kermit -YQqD 0 -is"for binary send (Y means "skip the initialization file", q means "quiet, don't bother printing messages", D 0 means "delay 0 seconds before starting to send", which is useful when your terminal program supports Kermit autodownloads).
This is only a first step, and is so far available only in the UNIX and VMS versions, and then only in certain of them (the ones with a sockets library and that have the select() function available). The idea is that you can tell C-Kermit to wait for an incoming TCP/IP connection on a socket of your choice. What you do with it after the connection comes in is up to you. It can be put into server mode; it can run some kind of script (like a "host mode" script); you can even go into CONNECT mode and have a "chat" session.
If you put it into server mode, you can also specify a username and password that must be supplied by the client before the server will honor any other requests, and you can also set up all sorts of restrictions on what the client can do. This gives ordinary users the ability to set up relatively secure and private file transfers with anybody else on the Internet, without any special privilege, without the need to create user IDs, without requiring access to directories (such as /pub/ftp) they do not own, etc.
In future releases, we'll be expanding this to provide a kind of generic "Kermit service" on the Internet, similar to FTP service.
C-Kermit's script programming features have been both expanded and simplified. The script programming language is now:
To illustrate, here is a script program to print the day of the week in German (or something like it):
switch \v(nday) { :0, echo Sonntag, break :1, echo Montag, break :2, echo Dienstag und zunaechst kommt... :3, echo Mittwoch, break :4, echo Donnerstag, break :5, echo Freitag - Gott sei dank, break :6, echo Samstag, break :default, echo Invalid day - \v(nday)! }Note the new SWITCH statement, the block structure (accomplished by braces), and the absence of those confusing ",-" constructions at the end of each line.
Besides the new features and simplified syntax (don't worry, the old syntax is still accepted!), C-Kermit 6.0 offers dozens of new variables and functions (listed in the next two sections), local variables for macros and command files, and automatic evaluation of arithmetic expressions in many contexts. Most of C-Kermit's new script programming features will also be found in MS-DOS Kermit 3.15. Thus, considering C-Kermit 6.0's wider coverage of platforms, the Kermit script language is not only more powerful and easy to use than ever before, but also more portable.
So what? (you ask). In today's mass-market world of graphical workstation and clickable hyperlinks, there is an increasing need to automate complicated communications tasks -- connection, authentication, data transfer -- to create "canned" procedures for increasingly naive users, as well as for embedded applications. What better tool for this than Kermit: tried and true, available and tested on more platforms than any other communications software, well supported, and portable. That means that scripts you develop for Kermit are not limited to a single platform, but can be used and re-used on hundreds of different ones. Thus Kermit maximizes the return on your script-development investment like no other software.
\v(charset) (local character set) \v(connection) (type of connection - serial, tcp/ip, etc) \v(cps) (speed of most recent file transfer, chars per sec) \v(crc16) (16-bit CRC of most recent file transfer) \v(d$xxx) (various SET DIAL values) \v(dialstatus) (numeric code for DIAL result) \v(dialnumber) (number most recently dialed) \v(dialresult) (literal string returned by modem after dialing) \v(download) (download directory) \v(errno) (value of the "errno" variable) \v(errstring) (error message, if any, associated with errno) \v(evaluate) (result of most recent EVALUATE command) \v(ftype) (current FILE TYPE setting, e.g. "text" or "binary") \v(instatus) (detailed result of the most recent INPUT command) \v(ipaddress) (my IP address - if known, if any) \v(minput) (tells which MINPUT search string was matched) \v(modem) (current modem type) \v(m_xxx) (various SET MODEM COMMAND values) \v(newline) (newline character or sequence appropriate to the OS) \v(packetlen) (current RECEIVE PACKET-LENGTH value) \v(parity) (current PARITY setting) \v(protocol) ("kermit") \v(rows) (number of rows (lines) on your screen, if known) \v(cols) (number of columns on your screen, if known) \v(terminal) (terminal type, if known) \v(tmpdir) (directory for creating temporary files) \v(query) (result of most recent REMOTE QUERY command) \v(sysid) (Kermit protocol system/OS code) \v(window) (current SET WINDOW size) \v(xversion) (product-specific C-Kermit version number, if any) \v(_line) (current line number in current command file)
\Fbasename(file) (filespec with disk, path, etc, removed) \Fbreak(s,c) (substring of string s up to first occurrence of char c) \Fcapitalize(s) (string s capitalized) \Fchecksum(s) (numeric checksum of string s) \Fcrc16(s) (numeric 16-bit CRC of string s) \Fdate(file) (creation or modification date of file) \Fhexify(s) (hexadecimal representation of string s) \Fipaddr(s,n) (first IP address in s starting at position n) \Fltrim(s1,s2) (trim all chars that are in s2 from left of s1) \Fmodulus(n1,n2) (n1 mod n2) \Freplace(s1,s2,s3) (replaces all occurrences of s2 in s1 with s3) \Frindex(s1,s2,n) (rightmost occurrence of s1 in s2) \Fsize(file) (size, in bytes, of file) \Fspan(s1,s2) (left substring of s1 with only characters from s2) \Ftod2secs(hh:mm:ss) (convert hh:mm:ss to seconds since midnight) \Ftrim(s1,s2) (trim all chars that are in s2 from right of s1) \Funhexify(string) (opposite of \fhexify()) \Fverify(s1,s2,n) (position of the first char in s2 not also in s1)
C-Kermit 6.0.192 has been verified (and in some cases, corrected) to handle post-millenium dates correctly in the UNIX, VMS, and other versions. This means:
You can obtain C-Kermit 6.0 by mail order or by Internet FTP. To order by mail:
To obtain C-Kermit sources and binaries on the Internet, use the links below or else use anonymous ftp to kermit.columbia.edu, directory kermit; follow the instructions in the "read me" files that pop up when log in, and each time you change directories.When obtaining Kermit software over the Internet, please remember: