Smart Ulist version 1.9

Copyright (c) 1997 by Michal Koucky







Table of Contents


1.0 Introduction
2.0 Installation
3.0 Usage
4.0 Translation File
5.0 Specification
6.0 Obtaining a Copy of Smart Ulist & Contacting Author
7.0 Version Changes & Bugs
8.0 Disclaimer & Copyright
9.0 Trademarks



1.0 Introduction

Thank you for using the Smart Ulist.

Smart Ulist ("Ulist") is primarily intended to print out in pretty fashion a list of logged-in users on Novell NetWare file server. It prints out among others full-names of logged-in users, names of computers (if supplied translation file). Whole list can be sorted according specified rules.

This program can be used instead of USERLIST.EXE for Novell NetWare 3.11+

It requires PC-compatible computer running Novell NetWare 3.11+ Workstation shell.

Smart Ulist is provided as FreeWare, and thus you may freely distribute it providing 1) the distribution is *not* for profit, and 2) all files are included and unchanged (including this doc file). Michal Koucky takes no responsibility for the results of using or misusing this software. Please see the end of this file for the full text of the disclaimer under which this software is provided.


2.0 Installation

To install Smart Ulist, simply transfer the ulist19.zip file to your system, and unpack it using pkunzip or a similar zip decompression tool into desired directory.

You will find several files:


Ulist needs access to file with a table of computer names to be able to translate ethernet card addresses to computer names. This file may be located in directory with ULIST.EXE file or in any other directory if you use `/p' command line option.

Contact your network administrator to obtain this translation file appropriate to your site or if there is no translation file for your site you can create one. If Ulist finds no translation file then it simply uses ethernet card addresses as computer names.

Place translation file named `BOOTPTAB' in Ulist directory or use `/p' option.


3.0 Usage

To run Ulist, just type `ulist' at command prompt.

General format of command line to run Ulist is:

ULIST.EXE [ <mask> ] [ <options> ]
where <mask> is a string without spaces which doesn't start with `/' and `-' characters and <options> is a list of one or more command line options specified in section 3.2

<mask> and/or <options> may be omitted.


3.1 Mask

<mask> on command line instructs Ulist to print out logged-in users only whose full-name and/or login-name contains this substring.

<mask> cannot start with `/' or `-' characters and cannot contain spaces. String matching is done case-insensitive.

<mask> is usable when we are looking for particular user.

An example:

      H:\>ULIST ji

      Server BARBORA
       User name               Station          Login-name      Date
       ----------------------  ---------------  --------------  ---------------
       Lucie Jizbova, KSVI     ksvi-lucka       JIZBOVA         12-NOV-96 07:34
       Jiri Holan              s5-62DCF         JHOL4148        12-NOV-96 09:28

3.2 Command Line Options

You can specify a few command line options:


4.0 Translation File

Translation file is a textual database file used for translating ethernet card names to computer names.

This file must be accessible for Ulist while Ulist is running. If translation file is not present then ethernet card addresses are used as computer names.

To specify name and location of translation file use `/p' option.

Ulist supports three formats of translation file - format called "old-style format", and formats commonly used on UNIX machines for configuration database files called "bootptab format" and "DHCP format". The bootptab format is default.


4.1 Old-style Format

This format is rarely used to store network information.

If you want to use this kind of translation file you must use `/o' option.

This is a textual file. Blank lines and lines beginning with other character than dot `.' are ignored by Ulist. Host entries are separated from one another by newlines; each entry must be on a single line. String following the dot (usually IP number) is ignored by Ulist and a hexadecimal representation of ethernet card address must follow this string. Computer name must then follow ethernet card address. Rest of the line is ignored by Ulist.

"BNF" syntax for old-style format:

<osf_file>  ::= *<osf_line>  <new-line character>
<osf_line>  ::= . <ws> <string> <ws> <card_addr> <ws> <name>  *(<ws><string>)
<osf_line>  ::= . <ws> <string> <ws>  -  *(<ws><string>)
<osf_line>  ::= <ws> <not_a_dot>  *(<ws><string>)
<name>      ::= <string>
<card_addr> ::= <hex_number>
<ws>        ::= *( space | tabelator )
<string>    ::= *(any character except space, tabelator and new-line characters)
<not_a_dot> ::= any character except space, tabelator, new-line and dot characters
<hex_number>::= *( 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | f | A | B | C | D | E | F )
An example MS.CFG file follows:

        #***********************************************************
        # Bootptab/Hosts/Networks/Netmasks/Domain Configuration File
        #***********************************************************
        #
        H 127.0.0.1     local.host localhost loopback lb me loghost
        N loopback  127 loop
        B default:ds=193.84.56.1 194.50.16.77:tc=root:
        S sal   194.50.16   0   255.255.255.0   222

        # 0- 33 rezervovano

        .  33 00000C03F191 mffuk-gw igs     # CISCO router IGS do OVC
        .  77 08002B2E7612 sns sisaldec     # DEC 5000 SISAL, zalozni server
        .  93 800010030700 lvt700 charles
        .  94 0800092E69BE laser
        . 126 080555500000 scanner
        . 130 0000C094C165 nms
        . 131 0000C004AD93 libor
        . 132 0000E80E5567 servis           # servisni notebook

        . 200 00000CFFE0AA tserv            # CISCO terminal server
        . 201 - slip1
        . 202 - slip2
        . 203 - slip3

        .  50 08002018D5E2 kam kucera       # Sun Classic na KAM
        .  51 0800202141D1 altec            #
        .  52 -            jupiter          # druhy sun
        .  53 -            kam-pc-1         # PC
        .  54 0000C09D7D4D kam-pc-2         # PC na sekretariate
        .  55 080007808ECA lcii                  # MAC na KAM
        .  56 0800070CE87C kam-mac-2        # MAC na KAM


4.2 bootptab Format

This format corresponds to commonly used format of configuration database file on UNIX machines. This kind of file is used by bootp and some DHCP daemons and usually is called `bootptab'. This file can be directly used by Ulist (of course, if it is accessible via standard DOS file services.)

You can ask network administrator to make an automatic updating of this file by every change of master copy `bootptab' file.

This format is by default supposed.

This is a textual file in which two-character case-sensitive tag symbols are used to represent host parameters. These parameter declarations are separated by colons `:', with a general format of:

          hostname:tg=value... :tg=value... :tg=value....
where hostname is the desired computer name and tg is a two-character tag symbol. Most tags must be followed by an equals-sign and a value as above. Some may also appear in a boolean form with no value (i.e. :tg:). The list of currently defined tags is long enough (see original manual pages) but Ulist recognizes ha tag only.

The ha tag takes as value a hardware address which must be specified in hexadecimal; optional periods and/or a leading '0x' may be included for readability.

The ha tag may appear in any order, with the following exception: the hostname must be the very first field in an entry.

The hostname is ASCII string which may be optionally surrounded by double quotes `"'.

Blank lines and lines beginning with `#' are ignored in the configuration file. Host entries are separated from one another by newlines; a single host entry may be extended over multiple lines if the lines end with a backslash (\). It is also acceptable for lines to be longer than 80 characters but shorter than 250 characters.

An example /etc/bootptab file follows:

      # /etc/bootptab generated Mon Feb 12 11:59:10 MET 1996 by ./boothosts

      root:\
      :hd=/usr/boot:bf=null:\
      :hn:vm=auto:to=3600:
      default:\
      :ds=194.50.16.71 194.50.16.77:\
      :tc=root:

      sal:tc=default:sm=255.255.255.0:gw=194.50.16.222:
      mffuk-gw:ht=1:ha=00000C03F191:ip=194.50.16.33:tc=sal:
      ns:ht=1:ha=08002B2C20CF:ip=194.50.16.71:tc=sal:
      alfinka:ht=1:ha=08002BE75423:ip=194.50.16.74:tc=sal:
      sns:ht=1:ha=08002B2E7612:ip=194.50.16.77:tc=sal:
      spider:ht=1:ha=0800202179C2:ip=194.50.16.80:tc=sal:
      laser:ht=1:ha=0800092E69BE:ip=194.50.16.94:tc=sal:\
      :lg=194.50.16.71:T144="laser.conf":
      seminar:ht=1:ha=800010033333:ip=194.50.16.95:tc=sal:
      webik:ht=1:ha=0020AF67AFD4:ip=194.50.16.96:tc=sal:

This definition is based on manual page for bootptab written by Carnegie Mellon University:
BOOTPTAB(5), Carnegie Mellon University, October 31, 1991


4.3 DHCP Format

This format corresponds to format of configuration file used by some DHCP daemons for network description. Such file can be directly used by Ulist (of course, if it is accessible via standard DOS file services.)

You can ask network administrator to make an automatic updating of this file by every change of its master copy.

If you want to use this kind of translation file you must use `/h' option.

This is a structured textual file based on grouping information in blocks like it is done in high level programming languages.

Parsing a whole structure of such file is complex task and therefore Ulist uses simplified rules by parsing those configuration files.

Ulist scans for keyword `host' after which it supposes to be an hostname separated by white spaces on both sides. After hostname it scans for keyword `hardware' and second token followed it takes as an ethernet address. Text on a line after character `#' is ignored.

White space is defined as a combination of spaces, new line characters, tabulators, brackets and separators.

Lines must be shorter than 250 characters.

An example /etc/dhcpd.conf file follows:

        # /etc/dhcpd.conf generated Fri Jun 20 15:14:01 MET DST 1997 by ./boothosts

        option domain-name "ms.mff.cuni.cz";
        option time-servers 195.113.19.71;

        # Segment elan
        subnet 194.50.18.0 netmask 255.255.255.0 {
            option routers 194.50.18.222;
            option domain-name-servers 194.50.16.71, 194.50.18.34, 
                                       194.50.18.179;
        }

        # Segment backbone
        subnet 195.113.16.0 netmask 255.255.252.0 {
            option routers 195.113.19.222;
            option domain-name-servers 195.113.19.71, 195.113.19.77;

        host beta { hardware ethernet 08:00:69:08:5E:8B; fixed-address 195.113.16.70;}
        host gama { hardware ethernet 08:00:69:09:83:48; fixed-address 195.113.16.71;}
        host delta { hardware ethernet 08:00:69:08:B6:47; fixed-address 195.113.16.72;}
        host epsilon { hardware ethernet 08:00:69:08:6E:00; fixed-address 195.113.16.73;}
        host ulab-xt1 { hardware ethernet 08:00:09:E4:26:62; fixed-address 195.113.16.82;}
        host ulab-xt2 { hardware ethernet 08:00:09:E4:26:80; fixed-address 195.113.16.83;}
        host ulab-19 { hardware ethernet 08:00:20:23:76:5D; fixed-address 195.113.16.89;}
        host s5-11T { hardware ethernet 00:20:AF:42:F5:52; fixed-address 195.113.16.130;}
        host s5-12T { hardware ethernet 00:20:AF:42:F5:40; fixed-address 195.113.16.131;}
        host s5-13T
          { hardware ethernet 00:20:AF:35:46:42; fixed-address 195.113.16.132;}
        host athos { hardware ethernet 08:00:20:77:D9:E7; fixed-address 195.113.17.183;}
        host kam-pc-2 { hardware ethernet 00:00:C0:9D:7D:4D; fixed-address 195.113.18.114;}
        host lcii { hardware ethernet 08:00:07:80:8E:CA; fixed-address 195.113.18.115;}
        host kam-mac-2 { hardware ethernet 08:00:07:0C:E8:7C; fixed-address 195.113.18.116;}
        host kam-pc-3 { hardware ethernet 00:60:8C:75:E1:5A; fixed-address 195.113.18.117;}
        host kumbal { hardware ethernet 00:20:E4:80:0D:34; fixed-address 195.113.18.118;}
        }


5.0 Specification

Ulist supports up-to 255 server connections. If your server supports more than 255 simultaneous connections list of users may be uncompleted.

The number of ethernet card names which Ulist can handle is 1450. If there is more than 1450 ethernet cards addresses in translation file Ulist cannot work. You can contact author to fix this limit.


6.0 Obtaining a Copy of Smart Ulist & Contacting Author

This program can be obtained via HTTP from URL:
        http://www.ms.mff.cuni.cz/~mkou2157/ulist/ulist19.zip
Author can be contacted via e-mail at address:
        mkoucky@acm.org 
     or Michal.Koucky@st.mff.cuni.cz
or by snail-mail:
        Michal Koucky
        Novodvorska 1118
        142 00 Praha 4
        The Czech Republic


7.0 Version Changes

1.0 - 1.4 earlier versions of Ulist
1.5 added support for bootptab format of translation file
1.5b arrow keys problem for continue fixed
1.5c configurable sorting
1.5d added support for statistic
1.5f support for up to 254 connections
1.6 added user name mask selection
1.6c support for up to 255 connections
support for up to 1450 computer names
bug in parsing of translation file fixed
1.6d prints out logical station number
1.7 public release version
fully conform to bootptab specification
1.7a first non-alphanum character in host name ignored
1.8 added support for DHCP format
1.8a fixed problem with long hostnames and buggy adresses in DHCP
1.8b added machine name mask selection
1.9 fixed problem with redirecting output

7.1 Bugs

None known yet.
Please report all bugs to
the author


8.0 Disclaimer & Copyright

THE INFORMATION AND CODE PROVIDED IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICHAL KOUCKY BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICHAL KOUCKY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

The version of Smart Ulist (Version 1.9), Copyright (c) 1997 by Michal Koucky, provided herewith, is hereby distributed as so-called "freeware".

By that term, Michal Koucky, intends to distribute this software product without the reservation of any proprietary or other economic rights. Each user may, in turn, distribute this software product to other users without obtaining the permission of Michal Koucky; provided only that (i) no user may distribute the software product, either by itself or in conduction with any other product or device, in exchange, either directly or indirectly, for profit, the intention of profit or any other economic considerations, without the express written permission of Michal Koucky, which said permission may be conditioned, withheld or delayed at its sole discretion, (ii) each copy so distributed by a users includes this "ULIST.DOC" file and (iii) the copy so distributed has not been altered, modified, impaired or damaged. Any user who distributes this software product in violation of these specifically reserved conditions shall be liable for any and all claims, losses, damages and liabilities resulting therefrom.


9.0 Trademarks

NetWare and Novell are registered trademarks of Novell, Inc.
UNIX is a registered trademark of UNIX System Laboratories, Inc.