home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / getusers.cmd < prev    next >
OS/2 REXX Batch file  |  2000-02-15  |  8KB  |  236 lines

  1. /*---------------------------------------------------------------------------*\
  2. |   GET all USERS from a LAN Server 3.0 and higher                            |
  3. |   and dump it to an ASCII File                                              |
  4. |                                   (C) Alain Rykaert IBM-Belgium SEP95-MAY96 |
  5. |                                                                 FEB2000     |
  6. \*---------------------------------------------------------------------------*/
  7.  
  8.     Parse Arg Option
  9.  
  10.     MaxLines = 9999            /* Number of Lines to separate with a header*/
  11.  
  12.     Call Init                    /* Initialisation of DLL's and other stuff*/
  13.     Call ChkOpt                          /* Check Options & display Welcome*/
  14.     Call ChkPws                               /* Check the PWS & Admin name*/
  15.     Call Columns                        /* Read the Columns definition file*/
  16.     Call Main                                            /* do the main job*/
  17.     Call Quit                                                       /* Quit*/
  18.  
  19.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  20.  
  21.     Call Time('R')
  22.    'if exist' OUTF 'del' OUTF
  23.  
  24.  /* RC = NetEnumerate(280, 'USERID', '\\'SRVNAME) */
  25.     RC = WfrxUserEnum('\\'SrvName,'UserID')
  26.     If RC = 0
  27.       Then Do
  28.              Call RxStemSort 'UserID'
  29.              Call LineOut OutF, Banner
  30.              Do i = 1 to UserID.0
  31.                If i // MaxLines = 0
  32.                  Then Call LineOut OutF, Banner
  33.                  Else Nop
  34.                If \MUTE
  35.                  Then Do
  36.                         Call SysCurState Off
  37.                         Call SysCurPos 20,0
  38.                       End
  39.                  Else Nop
  40.                Say '0909'x ESC'[K Total Users =' i'/'UserID.0 UserID.i
  41.                RC = NetGetInfo(280, 'UserInfo', '\\'SrvName, UserID.i)
  42.                If RC = 0
  43.                  Then Call Writeit
  44.                  Else Call Logit 'Get NetGetInfo', UserID.i, RC
  45.              End
  46.            End
  47.       Else Do
  48.             Call LOGIT 'Get Users', SRVNAME, RC
  49.             Call QUIT
  50.           End
  51.  
  52.     If \Mute Then Say '0909'x ' Total Time  =' Trunc(Time('E'),2)
  53.  
  54.     Call Stream OutF, 'C', 'Close'
  55.  
  56.     Call SysSetObjectData OutF, 'ICONFILE='Directory()'\Users.Ico'
  57.  
  58.     Return
  59.  
  60.  WRITEIT:/* --------------------------------------------------- WRITEIT: ----*/
  61.  
  62.     USERINFO.OPT      = Left('',COLL.1,' ')       /* Column 1 must be BLANK*/
  63.     USERINFO.PASSWORD = Left('****', COLL.3, ' ')
  64.  
  65.     OUT = ''
  66.     do j = 1 to COLT
  67.        COLNAME = COLN.j
  68.        DATA.j = Left(USERINFO.COLNAME, COLL.j, ' ')
  69.        OUT = OUT || DATA.j || ';'
  70.     end
  71.     Call LineOut OUTF, OUT
  72.     Call Stream  OUTF, 'C', 'CLOSE'
  73.     Return
  74.  
  75.  COLUMNS:/* --------------------------------------------------- COLUMNS: ----*/
  76.  
  77.     BANNER = ''
  78.     i = 0
  79.     do while Lines(COLF)
  80.        LLINE = LineIn(COLF)
  81.        if Left(LLINE, 1) = '*',
  82.         | Strip(LLINE) = ''
  83.         then iterate
  84.         else Nop
  85.        i = i + 1
  86.        parse value LLINE with COLN ';' COLL
  87.        COLN.i = Strip(COLN)
  88.        COLL.i = Strip(COLL)
  89.        BANNER = BANNER || Left(COLN.i, COLL.i, ' ') || ';'
  90.     end
  91.     COLT = i
  92.     Call Stream COLF, 'C', 'CLOSE'
  93.  
  94.     Return
  95.  
  96.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  97.  
  98.     SRVNAME = ''
  99.     OUTF    = 'USERS.CSV'
  100.     LOGF    = 'LSMT.LOG'
  101.     PIPE    = ''
  102.     TRACE   = 0
  103.     MUTE    = 0
  104.  
  105.     OPTION = Translate(OPTION)
  106.     do while OPTION <> ''
  107.        Parse value OPTION with ARGUMENT ' ' OPTION
  108.        select
  109.         when Left(ARGUMENT,5) = '/SRV:'  then SRVNAME = Substr(ARGUMENT,6)
  110.         when Left(ARGUMENT,5) = '/OUT:'  then OUTF    = Substr(ARGUMENT,6)
  111.         when Left(ARGUMENT,5) = '/LOG:'  then LOGF    = Substr(ARGUMENT,6)
  112.         when Left(ARGUMENT,5) = '/PIP:'  then PIPE    = Substr(ARGUMENT,6)
  113.         when Left(ARGUMENT,2) = '/M'     then MUTE    = 1
  114.         when Left(ARGUMENT,2) = '/T'     then TRACE   = 1
  115.         otherwise Nop
  116.        end
  117.     end
  118.  
  119.     if SRVNAME = '' then signal GETHELP
  120.  
  121.     if \MUTE
  122.      then do
  123.              Topic1='GETWELCOME'
  124.              Topic_String.Topic1.1=SRVNAME;
  125.              Topic_String.Topic1.2=OUTF;
  126.              Topic_String.Topic1.3=LOGF;
  127.              Topic_String.Topic1.4=PIPE' ';
  128.              Topic_List='WELCOMELOGO' Topic1 'GETUSERS';
  129.              Call GETANS
  130.              Parse VALUE SysCurPos() With Old_R Old_C; '@Pause';
  131.              Call SysCurPos Old_R, Old_C; say ESC'[K';
  132.           end
  133.      else do
  134.              say 'ServerName =' SRVNAME
  135.              say 'OutputFile =' OUTF
  136.              say 'LogFile    =' LOGF
  137.           end
  138.  
  139.     Return
  140.  
  141.  CHKPWS:/* ---------------------------------------------------- CHKPWS: -----*/
  142.  
  143.     RC = NetGetInfo(350, 'WKSTAINFO','')
  144.     if RC = 0
  145.      then do
  146.              ADMNAME = WKSTAINFO.UserName
  147.              PWSNAME = WKSTAINFO.ComputerName
  148.           end
  149.      else do
  150.             Call LOGIT 'Get PWS Info', ,RC
  151.             Call Quit
  152.           end
  153.     Return
  154.  
  155.  INIT:/* ------------------------------------------------------ INIT: -------*/
  156.  
  157.     Call RgUtil   '/M'                                    /* Rexx Utilities*/
  158.     Call RgUtils  '/M'                                    /* Rexx Utilities*/
  159.     Call RgLSRXUT '/M'                             /* Lan Server Rexx Utils*/
  160.  
  161.     Parse Upper Source . . P_NAME
  162.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  163.  
  164.    '@echo off'
  165.     Esc   = '1B'x
  166.     Redir = '>NUL 2>NUL'
  167.  
  168.     COLF  = 'USERS.INI'                          /* Column description file*/
  169.     Call CHKFILE COLF
  170.  
  171.     Resource_File = 'LSMT.RSC'                 /* Ansi Topics Resource File*/
  172.     Call CHKFILE Resource_File
  173.  
  174.     Return
  175.  
  176.  GETANS:/* ---------------------------------------------------- GETANS: -----*/
  177.  
  178.     Vars_List = Ansi_Say(Resource_File Topic_List)
  179.     Parse VALUE SysCurPos() With Old_R Old_C
  180.     Do While Vars_List <> ''
  181.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List
  182.        Call SysCurPos Row, Column
  183.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m'
  184.        End
  185.     Call SysCurPos Old_R, Old_C
  186.  
  187.     Return
  188.  
  189.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  190.  
  191.     if \MUTE
  192.      then do
  193.              Topic1 = 'GETHELP'
  194.              Topic_String.Topic1.1 = PRGN;
  195.              Topic_List = Topic1;
  196.              Call GETANS
  197.           end
  198.      else say 'Incorrect options.'
  199.  
  200.     Call QUIT
  201.  
  202.     Return
  203.  
  204.  CHKFILE:/* --------------------------------------------------- CHKFILE: ----*/
  205.  
  206.     Parse Arg File
  207.  
  208.     If Stream(File, 'C', 'Query Exists') = ''
  209.       Then Do
  210.              say ' File' File 'not found.'
  211.              Call Quit
  212.            End
  213.       Else Nop
  214.     Call Stream File, 'C', 'Close'
  215.  
  216.     Return
  217.  
  218.  LOGIT:/* ----------------------------------------------------- LOGIT: ------*/
  219.  
  220.     FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
  221.     RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
  222.  
  223.     Return
  224.  
  225.  QUIT:/* ------------------------------------------------------ QUIT: -------*/
  226.  
  227.     Call LineOut 'LSMT.END', PRGN, 1
  228.     Call Stream  'LSMT.END', 'C', 'CLOSE'
  229.     Call Stream   COLF,      'C', 'CLOSE'
  230.     Call Stream   LOGF,      'C', 'CLOSE'
  231.     Call Stream   OUTF,      'C', 'CLOSE'
  232.  
  233.     Exit
  234.  
  235.  /*--------------------------------------------------------------------------*/
  236.