home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / getsrvs.cmd < prev    next >
OS/2 REXX Batch file  |  1996-10-09  |  7KB  |  232 lines

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