
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
tkined /pub/local/tkined/contrib directory on ftp.ibr.cs.tu-bs.de. 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 a network configuration 
management database called bones. Starting with the 2.0 release, we 
implement the bones database on SQL server. The primary target is the
freely available mini SQL (msql) backend written by David J. Hughes 
(Bambi@Bond.edu.au). It is available from Bond.edu.au [131.244.1.1]
in /pub/Minerva/msql. The README in the bones directory contains 
further notes on how to setup the database. Note, it is possible to
replace the msql backend by an oracle or sybase backend by using
the appropriate Tcl SQL interface instead of msqltcl. To configure 
scotty to include msql support, you should use the --with-msql 
configure option.


IMPORTANT INFO ABOUT CMIP

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-cmip option. Note that you will have to edit cmip/Makefile
since it will most likely contain paths that do not match you osimis
installation.


IMPORTANT INFO ABOUT GDMO

This version contains a Tcl interface to the GDMO definition format
of OSI managed objects. A parser can be used to load GDMO files and
a Tcl command named gdmo provides access much the same way as the
mib command of the SNMP extension. To configure scotty for GDMO
support, you should use the --with-gdmo option. The parser is build
with flex and bison, but lex and yacc may also work.



INSTALLATION:

To install scotty, you must have Tcl 7.4 and Tk 4.0 installed.  To
compile scotty and ntping, type ./configure and make. This should work
on most UNIX systems. The configure script will look for some standard
locations to find the Tcl and Tk headers and libraries. It will prompt
you for the right path if it does not find them automatically.

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 
(untested) configure 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 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 reworked versions of the tcp commands written by Pekka Nikander
(pnr@innopoli.ajk.tele.fi) and Tim MacKenzie
(tym@dibbler.cs.monash.edu.au).

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 his
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.

Sam Shen (sls@mh1.lbl.gov) send me a patch which implements the 
udp multicast command.

Hakan Soderstrom (hs@soderstrom.se) wrote the msqltcl interface which
is based on the sybtcl and oratcl interface witten by Tom Poindexter
(tpoindex@nyx.cs.du.edu). Thanks for making this good work available.

David J. Hughes (Bambi@Bond.edu.au) did a great job on writing the
Mini SQL Server. He did something successfully that we did not get
right with our bones server.

Doug Hughes (Doug.Hughes@Eng.Auburn.EDU) fixed a long outstanding bug
in sunrpc probe and provided some other valuable fixes/comments.

Peter Reilly (peter@euristix.ie) send patch to correct the encoding of
IP addresses.

Hans Bayle (hansb@aie.nl) uncovered some bugs in the ASN.1 code 
(decode/encode object identifier) and some other minor problem
while trying to run scotty on a SCO box.

David Brower <dbrower@us.oracle.com> send in some patches to make
purify happy with.

Giorgio Andreoli (andreoli@ercole.cefriel.it) helped to fix some
Integer32 related problems.

Jim Madden (jmadden@ucsd.edu) provided some patches to fix some
bugs in the monitoring scripts.

Andre Beck (beck@ibh-dd.de) provided some more fixes for the interface
load monitoring script.

Richard Kooijman wrote the code to display a MIB tree on a canvas (part
of the tricklet package). 

Andy (ayoder@fore.com) provided some patches for the MIB parser.

Joergen Haegg <jh@axis.se> send some patches to improve portability.

Peter J M Polkinghorne <Peter.Polkinghorne@gec-hrc.co.uk> provide some
ideas that made processing of set operations `as if simultaneous' a
bit easier.
