
Welcome to scotty!

You are looking at the source of scotty, a tcl extensions to retrieve
status information about TCP/IP networks.  The extensions include
commands to send icmp packets a la ping, to lookup hostnames, to query
the portmapper and mount daemons. Also included are generic tcp/udp
extensions as well as commands to query the domain name service for a,
ptr, hinfo, mx and soa records and commands to query ntp server. log
messages can be written by using the syslog command.

The perhaps most interesting extension is an interface to the SNMPv1
and SNMPv2 protocol. This interface was written from scratch to
support a Tcl API. All other Tcl SNMP APIs that I know are implemented
on top of a generic C interface to a SNMP stack. Avoiding this C
interface allows a fast implementation (e.g. Tcl varbind lists are
directly converted and ASN.1/BER encoded) and better integration in
the Tcl environment. Our experiments with other implementations also
showed us, that access to static MIB information is very important for
the speed of a SNMP application. The mib command of the scotty
extension provides fast access to the most important MIB information
by parsing MIB files into a MIB tree structure kept in memory. A
condensed format of the MIB files is saved to speed up loading times
once a MIB has been parsed.


IMPORTANT INFO ABOUT NTPING

The directory ntping contains the source of ntping that is used as a
server for icmp requests. icmp packets can not be send directly from a
tcl interpreter, since access to a raw socket is required on most
systems. Therefore scotty spawns a process running suid root which
performs the icmp request.


IMPORTANT INFO ABOUT SYSLOGD

There is a replacement for your vendor supplied syslogd daemon in the
syslogd directory. It is a slightly modified version of the BSD
syslogd which supports tcp connections. This is a very cheap trick
to set up an event logging mechanism. You have to install the new
syslogd on one of your machines and you need to add a line to forward
all messages to this machine. Now you can connect to your central
syslog daemon and read all the warnings and error messages produced
on your network.


IMPORTANT INFO ABOUT BONES

This version can be configured to interact with the bones database
for network configuration management. A reimplementation of the
bones services is currently done (we call it bones light). The current
snapshot is available from ftp.ibr.cs.tu-bs.de in pub/local/tkined. 
To configure scotty to include bones support, you should use the
--with-bones configure option.


IMPORTANT INFO ABOUT OSIMIS

This version contains a tcl interface to the cmip protocol based on
the OSIMIS implementation. It is based on the last public OSIMIS
version 3.0p1 available from bells.cs.ucl.ac.uk. OSIMIS is based on
ISODE and is very big (both source and the resulting binary). If
someone knows about a smarter public cmip implementation, please let
me know. To configure scotty for OSIMIS, you should use the
--with-osimis option. Note that you will have to edit osismis/Makefile
since it will most likely contain paths that do not match you osimis
installation.


INSTALLATION:

To compile scotty, you must have tcl 7.3 installed.

To make scotty and ntping, type ./configure and make. This should work
on most UNIX systems. There are two more options that can be used to
define a tcl include and a tcl library directory:

	--with-tcl-include=<path>
	--with-tcl-library=<path>

The default compiler is cc. You can force the use of gcc by using:

	--with-gcc

If you want to use scotty with extended tcl, you could try the 
configure (not yet tested) option:

	--with-tclX

Installation of the ntping binary requires root privilege since ntping
must access raw sockets. You can use the target sinstall to do this
from the top level makefile. root-privilege is also needed to install
the SNMP trap forwarder strapsd. The target sinstall will install both
programs.

On Ultrix and maybe some other machines that dont have rpcgen there is
a compat directory which contains files that were created by rpcgen on 
a Sun workstation running SunOs 4.1.1. The configure script will copy 
these files in case it does not find rpcgen on your system.

The examples directory contains some small scripts to play around and
to test scotty. If you like them so much that you would like to install
them, just type make install in the example directory.

If you have problems with the installation or if you have made
changes to get scotty and ntping running on your hardware, please 
let us know.


FUTURE:

Scotty is the base tcl interpreter that can be used with the tkined
network editor. A very early paper describing a precursor of tkined is
available from ftp.ibr.cs.tu-bs.de in the file
/pub/local/papers/ined.ps.Z.  It has been presented at the SANS II
conference in April '93. The tkined directory contains some scotty
scripts that give you an impression of what can be done using tkined
and scotty. The latest tkined editor is always available via ftp from
ftp.ibr.cs.tu-bs.de in the directory /pub/local/tkined.


Have fun,
			Juergen Schoenwaelder
			(schoenw@ibr.cs.tu-bs.de)


Credits:

scotty started as a readline tcl frontend when there was no standard 
tclsh available. I added commands to access network information when 
I started work on the network editor tkined. 

Some of scotty's commands were taken from the net: The tcp commands
were written by Pekka Nikander (pnr@innopoli.ajk.tele.fi) and Tim
MacKenzie (tym@dibbler.cs.monash.edu.au).  The select command is taken
from extended tcl written by Karl Lehenbauer (karl@neosoft.com) and
Mark Diekhans (markd@Grizzly.com).

The dns command and the icmp server ntping were written by Erik
Schoenfelder (schoenfr@ibr.cs.tu-bs.de) who also helped me to fix bugs
and to enhance portability.

Stefan Schoek (schoek@ibr.cs.tu-bs.de) contributed the simple job
scheduler. It was rewritten by me but the ideas were taken from the
original tcl version.

Dirk Grunwald (grunwald@foobar.cs.colorado.edu) and Dan Mosedale
(mosedale@genome.stanford.edu) provided patches for DEC alpha
machines.

Bob Shaw (bshaw@spdc.ti.com) helped by reporting bugs that made scotty
more portable.

Harlan Stenn (harlan@cms-stl.com) provided some bug fixes and a patch 
to get yanny to work on HP-UX and SGI boxes.

John Rodkey (rodkey@westmx.westmont.edu) reported some portability 
problems on AIX machines.

Reto Beeler (beeler@tech.ascom.ch) contributed a simple MIB browser.
It has been rewritten to use `hyperlinks' and is now part of the
snmp browser script.

John P. Rouillard (rouilj@cs.umb.edu) provided some patches to compile
scotty on Solaris machines out of the box. He also contributed many 
ideas that improved the event and monitoring scripts.

Juergen Luksch (luksch@telenet.de) reported compilation problems on
SCO machines and provided some patches to fix them.

De Clarke (de@lick.ucsc.edu) helped to make integration of scotty and
extended Tcl easier.
