C-Kermit 6.1

Communications Software for UNIX, VMS, Stratus VOS, QNX, OS-9, AOS/VS, Plan 9 from Bell Labs, the Commodore Amiga, . . .
Beta.05, 7 May 1998
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.

The current version of C-Kermit is 6.0, released in September 1996:

After extensive private testing, C-Kermit 6.1 entered public Beta testing May 15, 1998:


SUMMARY OF NEW FEATURES

Those that show up as links are described in greater detail below. The others (and many more) are described in the text file, ckermit2.upd.

Program management

Making and Using Connections

File Transfer and Management

New and improved client/server features
Greek character sets

Script Programming

Bug fixes

New platforms
This is just a brief list; the complete story runs to about 100 printed pages, and can be found in the ckermit2.upd file, which is a supplement to Using C-Kermit, 2nd Edition.

for even more detail, you can read the day-by-day edit history in the ckc193.upd file, as well as all the Alpha and Beta test announcments in the alpha*.txt and beta*.txt files in the kermit/test/text/ directory.

The following sections present an overview of several of C-Kermit 6.1's new features. After these come links to the software itself.


EXTERNAL COMMUNICATION PROGRAM INTERFACE

The UNIX version of C-Kermit 6.1 can now be used through any other communications program whose user interface goes through standard input and standard output. This allows you (for example) to use all the scripting and file transfer features of C-Kermit through clients of various services that C-Kermit might not support directly (e.g. a SOCKS Telnet client, a cu or tip program that has access to a dialout device that Kermit does not, rlogin connections without being root).


KERBEROS(TM) AND SRP(TM) SECURITY

UNIX C-Kermit can now be built with support for MIT's Kerberos and/or Stanford University's Secure Remote Password (SRP) protocol. So far this has been done only for Linux. New makefile entries need to be added for other UNIX platforms to link with the appropriate libraries, but the UNIX code to use them is all written. Additional tinkering (and volunteer programming) would be required for other platforms such as VMS, VOS, etc.

These protocols allow for mutually authenticated Telnet connections without sending passwords over the network, and optionally also for fully encrypted sessions. The encryption modules are not part of the regular C-Kermit package due to USA export law. If you are interested in testing Kerberos or SRP, send us e-mail.

For further information, see the security.txt file.


COMMAND SWITCHES

As of version 6.1, C-Kermit allows for optional command modifiers called switches.

A switch is a keyword beginning with a slash (/). Some switches accept values as operands. Switches affect only the command with which they are included; thus their affect is local, not global like SET commands. Here are some examples:

  send oofa.txt                              ; No switches
  send /binary oofa.zip                      ; A switch without a value
  send /protocol:zmodem oofa.zip             ; A switch with a value
  send /text /delete /as-name:x.x oofa.txt   ; Several switches
Switches bring a new level of flexibility to Kermit's command language. For example, they can be used for file selection in file-transfer commands:
  send /after:8-Feb-1998_10:28:01 /larger-than:10000 /except:*.log *.*
or for disposition of the source file after transfer:
  send /binary /delete *.zip
or for mailing or printing:
  send /mail /subject:{Here is the recipe you wanted} lasagna.txt 
  send /print:{-PLaserWriter2 -#3} lasagna.ps
or whether to pass the file through a filter, or to descend directories recursively, or to recover an interrupted transfer from the point of failure, and so on, in any sensible combination.

Switches have been added not only to the SEND command, but also to most other file-transfer commands, as well as to the CONNECT, SET LINE, SET HOST, STATISTICS, and others.


AUTOMATIC TEXT/BINARY-MODE SWITCHING

C-Kermit 6.1 (and Kermit 95 1.1.16) automatically choose the appropriate transfer mode, text or binary, for each file they send by matching the file's name with a list of patterns. For example, if a file's name matches the pattern "*.txt" it is sent in text mode, whereas if it matches "*.zip" it is sent in binary mode. A comprehensive list of patterns is preconfigured, and commands are provided for you to edit the list, as well as to disable or re-enable this feature.

Filename pattern matching allows a file group to be sent between unlike systems (e.g. from UNIX to VMS) without having to separate the text and binary files, with full record-format and character-set conversion performed on text files, and binary files transferred without conversion, automatically. (NOTE: This feature is not used in VMS C-Kermit, which has a different method of accomplishing the same thing.)


PRESEVERATION OF FILE PERMISSIONS

The UNIX and VMS versions of C-Kermit 6.1 now include each file's permissions (protection code) among the transmitted file attributes. This is useful mainly in UNIX, so avoid loss of "execute" permission for programs or shell scripts during transfer. However, the mechanism also works across platforms so, for example, a UNIX file with execute permission will also have execute permission after being transferred to VMS (and vice-versa).


DIRECTORY-TREE TRANSFER

C-Kermit 6.1, when used in conjunction with Kermit 95 1.1.16 or later, MS-DOS Kermit 3.16 or later, or C-Kermit 6.1 itself, can perform "recursive" file transfers, in which all the (selected) files in the given directory are sent, plus all the files in all the subdirectories of the given directory, and all the files in their subdirectories, and so on.

Such transfers can take place not only between computers with similar file systems (such as Solaris and AIX), but also between dissimilar systems (like Windows 95 and HP-UX or VMS). Directories are created as needed during the transfer process.

Furthermore, any mixture of text and binary files can be accommodated via filename-pattern matching, as described in the previous section. This allows, for the first time anywhere (as far as we know) transfer of entire directory trees (entire file systems if you start at the root) between dissimilar computers in a single operation.


FILE-TRANSFER PIPES AND FILTERS

In some versions of C-Kermit 6.1 (notably the UNIX version) it is now possible to pass outbound or incoming files through a "filter" as part of the transfer process. Similarly, it is now possible to send the output of an arbitrary command or program, or to receive into the standard input of a command or program. For example, you may now tell C-Kermit to send the output of a pipeline composed of tar and gzip, and another C-Kermit on the other end to receive to a pipeline composed of gunzip and tar. Or in case you have a text file written in a character set that C-Kermit doesn't know about, you can pass it through a translation filter. You can even use this feature to accomplish encrypted file transfers on connections that are not already encrypted otherwise.


PERFORMANCE

File-transfer performance has been improved in several ways:

Streaming protocol may be used in conjunction with Kermit 95 1.1.16, MS-DOS Kermit 3.16, or C-Kermit 6.1 itself.

When full unprefixing and streaming are used with a large packet length, C-Kermit's file-transfer throughput is comparable with FTP; here are some typical text and binary file transfers between two UNIX workstations with C-Kermit 6.1 over a local 10Mbps Ethernet (note the new brief file-transfer display option, the automatic switching between binary and text mode, and the new more-accurate statistics):

	
 SENDING wart     (binary)   (23985 bytes): OK (0.040 sec, 599625 cps)
 SENDING wermit   (binary) (1323517 bytes): OK (4.490 sec, 294769 cps)
 SENDING ckcnet.c (text)    (269168 bytes): OK (0.790 sec, 340718 cps)
 SENDING ckwart.o (binary)   (25332 bytes): OK (0.040 sec, 633299 cps)
 SENDING ckufio.c (text)    (112341 bytes): OK (0.290 sec, 387382 cps)
 SENDING ckuusr.o (binary)  (132340 bytes): OK (0.180 sec, 735222 cps)
 SENDING ckuus2.o (binary)  (183168 bytes): OK (0.300 sec, 610559 cps)
 SENDING ckuus3.o (binary)  (154492 bytes): OK (0.200 sec, 772459 cps)
 SENDING ckuus6.o (binary)  (133128 bytes): OK (0.180 sec, 739599 cps)
C-Kermit 6.1 also responds much faster to connection loss and external interruptions during file transfer.


HOW TO GET IT

You can obtain the current C-Kermit 6.1 Beta test in any of several archive formats via anonymous ftp by clicking on the following links:

cku193.tar.Z
Source code and text files for UNIX and VMS, UNIX tar archive, compress format.
cku193.tar.gz
Source code and text files for UNIX and VMS, UNIX tar archive, gzip format.
cku193.zip
Source code and text files for UNIX and VMS, ZIP archive.
kermit-6.1.193-1.src.rpm
Source code, Red Hat Linux RPM
These archives (except the RPM) contain complete UNIX and VMS source code as well as documentation updates, installation instructions, hints and tips files, initialization files, scripts, demos, etc.
Trouble with FTP? . . CLICK HERE.
UNIX instructions:
  1. Download into an empty directory;
  2. uncompress (uncompress, gunzip, unzip, etc, as appropriate)
  3. if it's a tar file, untar ("tar xvf name-of-tar-file");
  4. "make xxx", where xxx is the appropriate target from the makefile for your platform (read the comments at the top of the makefile).

See the ckuins.doc file for greater detail. See the ckccfg.doc file for information about compile-time configuration options.

VMS instructions:
See the ckvins.doc file.

You can also retrieve the text files only (without the source code) in the following archives:

cku193txt.tar.Z
Text files for UNIX and VMS, UNIX tar archive, compress format.
cku193txt.tar.gz
Text files for UNIX and VMS, UNIX tar archive, gzip format.
cku193txt.zip
Text files for UNIX and VMS, ZIP archive.

Source code and text files are also available separately in the kermit/test/text/ directory. These include files for platforms other than UNIX and VMS, such as Stratus VOS, OS-9, etc. See the ckaaaa.hlp file for details.


INDIVIDUAL BINARIES

Individual binaries are also available from the kermit/test/bin/ directory for those who can not build from source code. Be sure to download in binary (not ASCII or text) mode. Those marked with "+" are C-Kermit 6.1 Beta.05; those without the "+" are from earlier Beta tests, or in some cases, from Alpha tests.

After downloading, rename to "wermit" or "wermit.exe" (etc), as appropriate for your operating system (as opposed to "kermit", to prevent confusion between the production and test versions) and, if necessary, give execute permission, e.g. (in UNIX):

$ chmod +x wermit

Note that any executable C-Kermit 6.1 binary should also be accompanied by an assortment of text files -- documentation updates, installation instructions, hints and tips, etc; see the previous section.

If you are able to make a binary not listed below (or that is listed below, but without the "+"), please contact us.


  ck9ker-net.bin                    OS-9/68K 2.4
  ck9ker-nonet.bin                  OS-9/68K 2.4
  ----------------------------------------------------------------------
+ ckdker-aosvsii.pr                 DG MV 2500 AOS/VS-II 2.20.73
  ----------------------------------------------------------------------
+ ckiker.exe                        Commodore Amiga, AmigaDOS 3.1 or higher
  ----------------------------------------------------------------------
+ ckpker.plan9_68020                Plan 9 from Bell Labs on 680x0
+ ckpker.plan9_i386                 Plan 9 from Bell Labs on PC
+ ckpker.plan9_mips                 Plan 9 from Bell Labs on MIPS
+ ckpker.plan9_sparc                Plan 9 from Bell Labs on Sparc
  ----------------------------------------------------------------------
+ ckuker.sys3upcgc                  AT&T 7300 UNIX PC (with curses)
+ ckuker.sys3upcold                 AT&T 7300 UNIX PC (no curses)
+ ckuker.sys3upcm                   AT&T 7300 UNIX PC (minimum size)
+ ckuker.att351gm                   AT&T 7300 UNIX PC (hardware flow control)
+ ckuker.ultrix43-mips              DECstation 5000, Ultrix 4.3
+ ckuker.linux-2.0.33-ms68000       Commodore Amiga, Linux 2.0.33 RH 5.0
+ ckuker.du32                       DEC Alpha Digital UNIX 3.2
+ ckuker.du40-4.0b                  DEC Alpha Digital UNIX 4.0B
+ ckuker.linux-2.1.103-alpha        DEC Alpha Linux 2.1.103
+ kermit-6.1.193-1.alpha.rpm        DEC Alpha Linux RPM 
+ ckuker.rs6aix32c                  IBM RS/6000 AIX 3.2
+ ckuker.aix41                      IBM RS/6000 AIX 4.1
+ ckuker.bsd44-hp9000_300           HP-9000/300 4.4BSD-Lite
  ckuker.hpux500wintcp              HP-9000/550 HP-UX 5.21 TWG-TCP/IP 1.2
+ ckuker.hpux65oc-hp9000_350        HP-9000/350 HP-UX 6.5
+ ckuker.hpux70olfnc-hp9000_350     HP-9000/350 HP-UX 7.05
+ ckuker.hpux80c-hp9000_385         HP-9000/385 HP-UX 8.00 (not optimized)
+ ckuker.hpux80oc-hp9000_425S       HP-9000/425S HP-UX 8.00 (optimized)
+ ckuker.hpux80onotcp-hp9000_425S   HP-9000/425S HP-UX 8.00 (ditto, no TCP)
+ ckuker.hpux90mot-9.10-hp9000_340  HP-9000/340 HP-UX 9.10 (Motorola CPU)
+ ckuker.hpux90-9.05-hp9000_712     HP-9000/712 HP-UX 9.05 (not optimized)
+ ckuker.hpux90o-9.05-hp9000_712    HP-9000/712 HP-UX 9.05 (optimized)
+ ckuker.hpux90o700-9.05-hp9000_712 HP-9000/712 HP-UX 9.05 (optimized for 700)
+ ckuker.hpux100-10.20              HP-9000/715/33 HP-UX 10.20 (not optimized)
+ ckuker.hpux100o-10.20             HP-9000/715/33 HP-UX 10.20 (optimized)
+ ckuker.hpux1100                   HP-9000/K200 HP-UX 11.00 (not optimized)
+ ckuker.hpux1100o+                 HP-9000/K200 HP-UX 11.00 (optimized)
+ ckuker.sv68r3v6                   Motorola MVME 147 68K, System V/68 R3V6
+ ckuker.sv88r40                    Motorola MVME 187 88K, System V R4 V4.4 
+ ckuker.next-3.1-mc68040           NeXT 68040 NeXTSTEP 3.1
+ ckuker.next-3.2-mc68040           NeXT 68040 NeXTSTEP 3.2
+ ckuker.next33-mc68040             NeXT 68040 NeXTSTEP 3.3
  ckuker.bsdi2-2.1                  PC, BSDI 2.1
  ckuker.bsdi2-3.0                  PC, BSDI 3.0
+ ckuker.bsdi3-3.1                  PC, BSDI 3.1
+ ckuker.freebsd2x                  PC, FreeBSD 2.2.6
+ ckuker.linux-1.2.13-i386          PC, Linux 1.2.13, Red Hat
+ ckuker.linux-2.0.31-i386          PC, Linux 2.0.31
+ ckuker.linux-2.0.33-i386          PC, Linux 2.0.33, Slackware 3.4
+ ckuker.sco32v4netnd-odt2          PC, SCO ODT 2.0 (with TCP/IP)
+ ckuker.sco32v504                  PC, SCO OpenServer 5.0.4 (no net)
+ ckuker.sco32v4netnd-odt2          PC, SCO ODT 2.0 (with TCP/IP)
+ ckuker.sco32v504                  PC, SCO OpenServer 5.0.4 (no net)
+ ckuker.sco32v504net               PC, SCO OpenServer 5.0.4 (TCP/IP)
  ckuker.is5r3jc-4.1                PC, Sunsoft Interactive UNIX 4.1
+ ckuker.unixware-1.1.2             PC, Unixware 1.1.2
  ckuker.unixware2-2.1.1            PC, Unixware 2.1.1
+ ckuker.unixware2-2.1.2            PC, Unixware 2.1.2
+ ckuker.pyramid                    Pyramid MIS-12/06 OSx5.1a-93a080
+ ckuker.pyrdcosx                   Pyramid MIS-ES6/1024 SMP_DC-OSx1.1-95c087.2  
+ ckuker.qnx16                      QNX 4.24 16-bit
+ ckuker.qnx32                      QNX 4.24 32-bit
+ ckuker.irix53                     SGI IRIX 5.3
+ ckuker.irix62                     SGI IRIX 6.2
+ ckuker.irix63                     SGI IRIX 6.3
+ ckuker.irix64                     SGI IRIX 6.4
+ ckuker.sinix542-5.42-mips         SNI SINIX-N 5.4.2 MIPS (RM200)
+ ckuker.solaris24-sparc            Sun Sparc, Solaris 2.4
+ ckuker.solaris24g-sparc           Sun Sparc, Solaris 2.4 (gcc)
+ ckuker.solaris24x25-sparc         Sun Sparc, Solaris 2.4, SunLink X.25
+ ckuker.solaris25-2.5.1-sparc      Sun Sparc, Solaris 2.5.1
+ ckuker.solaris25g-2.5.1-sparc     Sun Sparc, Solaris 2.5.1 (gcc)
+ ckuker.solaris26-2.6-sparc        Sun Sparc, Solaris 2.6
+ ckuker.sunos41c-4.1.3-sparc       Sun Sparc, SunOS 4.1.3_U1
+ ckuker.sunos41gcc-4.1.3-sparc     Sun Sparc, SunOS 4.1.3_U1 (gcc)
  ----------------------------------------------------------------------
+ ckvaker-vms62-nonet.exe           Alpha CPU, VMS 6.2,   no TCP/IP
  ckvaker-vms62-tgv40a.exe          Alpha CPU, VMS 6.2,   MultiNet 4.0A
+ ckvaker-vms62-tgv40b.exe          Alpha CPU, VMS 6.2,   MultiNet 4.0B
+ ckvaker-vms62-ucx40.exe           Alpha CPU, VMS 6.2,   UCX 4.0
+ ckvaker-vms71-nonet.exe           Alpha CPU, VMS 7.1,   no TCP/IP
+ ckvaker-vms71-tgv40b.exe          Alpha CPU, VMS 7.1,   MultiNet 4.0B
+ ckvaker-vms71-ucx42.exe           Alpha CPU, VMS 7.1,   UCX 4.2
  ----------------------------------------------------------------------
+ ckvvker-vms44-nonet.exe           VAX CPU,   VMS 4.4,   no TCP/IP
+ ckvvker-vms44-twg32.exe           VAX CPU,   VMS 4.4,   Wollongong 3.2
  ckvvker-vms45-nonet.exe           VAX CPU,   VMS 4.5,   no TCP/IP
+ ckvvker-vms55-nonet.exe           VAX CPU,   VMS 5.5-2, no TCP/IP
+ ckvvker-vms55-ucx20.exe           VAX CPU,   VMS 5.5-2, UCX 2.0
+ ckvvker-vms61-nonet.exe           VAX CPU,   VMS 6.1,   no TCP/IP
+ ckvvker-vms61-tgv40a.exe          VAX CPU,   VMS 6.1,   MultiNet 4.0AX
+ ckvvker-vms71-nonet.exe           VAX CPU,   VMS 7.1,   no TCP/IP
+ ckvvker-vms71-pst32.exe           VAX CPU,   VMS 7.1,   TCPware 3.2
+ ckvvker-vms71-tgv40b.exe          VAX CPU,   VMS 7.1,   MultiNet 4.0B

Questions? Comments? -- Send e-mail.


C-Kermit 6.1 / Columbia University / kermit@columbia.edu / 25 July 1998