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 sulist19.zip file to
    your system, and unpack it using pkunzip or a similar zip
    decompression tool into desired directory.
You will find several files:
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.
 
    General format of command line to run Ulist is: 
3.0 Usage
    To run Ulist, just type `ulist' at command prompt.
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.
 
    <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:
 
 
      
        Ulist prints out only connections whose computer name contains
        substring <mask>. 
        <mask> cannot contain spaces. 
   Ulist will not pause after each screen of information. 
        Ulist normally waits on a keystroke after each screen.
        Pressing character `C' has special meaning in this situation -
        it's the same as specifying command line option `/C' and
        from this point Ulist will not wait on any keystroke. 
        Use this option, if you are redirecting output. 
 Ulist prints out debug information, statistic and lists all
        connections. 
        Debug information are: name of translation file actually used and
        number of Ethernet card names defined in this file.
        All connections are listed including logged-out connections
        (you can see attached computers with nobody logged-in) 
   Ulist prints out statistic. 
        This statistic includes number of logged-in users, number of
        attached computers and maximum number of connections supported
        by this server.  (Attached computer is a computer which is
        attached to server whether or not somebody is logged-in
        from it.) 
   Ulist prints out Logical Station (Connection) Number for
        every connection. 
        This is usable when you need send a message directly to
        a particular station if user is logged-in from more than
        one computer. 
 
        <flags> is a list of sorting flags which specifies sorting
        rules for list of connections. 
        All flags are one-character and former flags in <flags> are
        more important: 
        Default list of sorting flags is '-ocnr' 
 
        You can specify full name with path of translation file. 
        If this option is omitted Ulist search for file named `BOOTPTAB'
        at first in directory with ULIST.EXE and then in current directory. 
   This option tells Ulist that translation file is "old-style". 
   This option tells Ulist that translation file conforms to "DHCP format". 
 
    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. 
 
    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: 
 
 
 
    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: 
    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  
 
    This definition is based on manual page for bootptab written
    by Carnegie Mellon University: 
 
    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: 
 
 
    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. 
 
 
    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.
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.
      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:
        Each flag can be preceded by `+' or `-' sign, which specifies
        sorting from `A' to `Z' (default) or from `Z' to `A'.
4.0 Translation File
    Translation file is a textual database file used for translating
    ethernet card names to computer names.
4.1 Old-style Format
    This format is rarely used to store network information.
<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.)
          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./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:
 
  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.)
        # /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.
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/sulist19.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
    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.