home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / getalias.cmd < prev    next >
OS/2 REXX Batch file  |  1999-10-29  |  8KB  |  257 lines

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