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

  1. /*---------------------------------------------------------------------------*\
  2. |   SET all GROUPS to a LAN Server 3.0 and higher                             |
  3. |   from 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 MAIN                                            /* do the main job*/
  13.     Call QUIT                                                       /* Quit*/
  14.  
  15.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  16.  
  17.     Call Time('R')
  18.    'if exist' CHKF 'del' CHKF
  19.     EC = 0
  20.     ExitCode = X2D('FE00')                          /* Good CID Return code*/
  21.  
  22.     do while Lines(INPF)
  23.        LLINE = LineIN(INPF)
  24.        OLINE = LLINE
  25.        parse value LLINE with OPT ';' LLINE
  26.        select
  27.         when OPT = '',
  28.          | LLINE = '',
  29.          | Left(Strip(OPT),1) = '*' then Iterate
  30.         when Translate(OPT) = 'OPT' then Call COLUMNS
  31.         when Translate(OPT) = 'A'   then Call ADDGROUP
  32.         when Translate(OPT) = 'D'   then Call DELGROUP
  33.         when Translate(OPT) = 'U'   then Call UPDGROUP
  34.         otherwise Iterate
  35.        end
  36.        if EC
  37.         then do
  38.                  Call LineOut CHKF, OLINE
  39.                  EC = 0
  40.                  ExitCode = X2D('1604')               /* Bad CID return code*/
  41.              end
  42.         else Nop
  43.     end
  44.     say '0909'x 'Total Time  =' Trunc(Time('E'),2)
  45.  
  46.     Return
  47.  
  48.  ADDGROUP:/* -------------------------------------------------- ADDGROUP: ---*/
  49.  
  50.     EC = 0
  51.     i  = 0
  52.     do while LLINE <> ''
  53.        i = i + 1
  54.        COLNAME = Strip(COLNAME.i)
  55.        parse value LLINE with VALUE ';' LLINE
  56.        GROUPINFO.COLNAME = Strip(VALUE)
  57.     end
  58.  
  59.     if TRACE
  60.      then do j = 1 to COLT
  61.              COLNAME = Strip(COLNAME.j)
  62.              say '09'x '>'GROUPINFO.COLNAME'<'
  63.           end
  64.      else Nop
  65.  
  66.     RC = NetAdd(70, 'GROUPINFO', '\\'SRVNAME)
  67.     if RC = 0
  68.        then RC = ''
  69.        else EC = 1
  70.     Call LOGIT 'Add Group', GROUPINFO.NAME, RC
  71.  
  72.     Return
  73.  
  74.  DELGROUP: /*-------------------------------------------------- DELGROUP: ---*/
  75.  
  76.     EC = 0
  77.     i  = 0
  78.     do while LLINE <> ''
  79.        i = i + 1
  80.        COLNAME = Strip(COLNAME.i)
  81.        parse value LLINE with VALUE ';' LLINE
  82.        GROUPINFO.COLNAME = Strip(VALUE)
  83.     end
  84.  
  85.     RC = NetDelete(70, '\\'SRVNAME, GROUPINFO.NAME)
  86.     if RC = 0
  87.        then RC = ''
  88.        else EC = 1
  89.     Call LOGIT 'Delete Group', GROUPINFO.NAME, RC
  90.  
  91.     Return
  92.  
  93.  UPDGROUP: /*-------------------------------------------------- UPDGROUP: ---*/
  94.  
  95.     EC = 0
  96.     i  = 0
  97.     do while LLINE <> ''
  98.        i = i + 1
  99.        COLNAME = Strip(COLNAME.i)
  100.        parse value LLINE with VALUE ';' LLINE
  101.        GROUPINFO.COLNAME = Strip(VALUE)
  102.     end
  103.  
  104.     if TRACE
  105.      then do j = 1 to COLT
  106.              COLNAME = Strip(COLNAME.j)
  107.              say '09'x '>'GROUPINFO.COLNAME'<'
  108.           end
  109.      else Nop
  110.  
  111.    /* Get OLD Groups settings */
  112.     RC = NetGetInfo(70, 'OLDINFO', '\\'SRVNAME, GROUPINFO.NAME)
  113.     if RC = 0
  114.        then RC = ''
  115.        else do
  116.                Call LOGIT 'Get Groups', GROUPINFO.NAME, RC
  117.                Return
  118.             end
  119.  
  120.     do j = 1 to COLT
  121.        COLNAME = Strip(COLNAME.j)
  122.        if OLDINFO.COLNAME <> GROUPINFO.COLNAME
  123.         then do
  124.                 select
  125.                  when GROUPNAME = 'ADMINSA'
  126.                   then do
  127.                        end
  128.                  otherwise Call SETINFO
  129.                 end
  130.              end
  131.         else Nop
  132.     end
  133.  
  134.     Return
  135.  
  136.  SETINFO: /*--------------------------------------------------- SETINFO: ----*/
  137.  
  138.     RC = NetSetInfo(70, COLNAME, GROUPINFO.COLNAME, '\\'SRVNAME, GROUPINFO.NAME)
  139.      if RC = 0
  140.       then RC = ''
  141.       else EC = 1
  142.     if COLNAME = 'PASSWORD'
  143.      then Call LOGIT 'Update Groups', GROUPINFO.NAME '-' '****', RC
  144.      else Call LOGIT 'Update Groups', GROUPINFO.NAME '-' GROUPINFO.COLNAME, RC
  145.  
  146.     Return
  147.  
  148.  COLUMNS: /*--------------------------------------------------- COLUMNS: ----*/
  149.  
  150.     BANNER = 'OPT'
  151.     i = 0
  152.     do while LLINE <> ''
  153.        i = i + 1
  154.        parse value LLINE with COLNAME.i ';' LLINE
  155.        BANNER = BANNER';'COLNAME.i
  156.     end
  157.  
  158.     COLT = i                      /* Total numbers of columns */
  159.  
  160.     Call LineOut CHKF, BANNER
  161.  
  162.     Return
  163.  
  164.  CHKOPT: /*---------------------------------------------------- CHKOPT: -----*/
  165.  
  166.     SRVNAME = '';
  167.     INPF = 'GROUPS1.CSV';
  168.     LOGF = 'LSMT.LOG';
  169.     CHKF = 'GROUPS1.CHK';
  170.     PIPE = '';
  171.     TRACE = 0;
  172.     MUTE = 0;
  173.  
  174.     OPTION = Translate(OPTION)
  175.     do while OPTION <> ''
  176.        Parse value OPTION with ARGUMENT ' ' OPTION
  177.        select
  178.         when Left(ARGUMENT,5) = '/SRV:' then SRVNAME = Substr(ARGUMENT,6)
  179.         when Left(ARGUMENT,5) = '/INP:' then INPF    = Substr(ARGUMENT,6)
  180.         when Left(ARGUMENT,5) = '/LOG:' then LOGF    = Substr(ARGUMENT,6)
  181.         when Left(ARGUMENT,5) = '/CHK:' then CHKF    = Substr(ARGUMENT,6)
  182.         when Left(ARGUMENT,5) = '/PIP:' then PIPE    = Substr(ARGUMENT,6)
  183.         when Left(ARGUMENT,2) = '/M'    then MUTE    = 1
  184.         when Left(ARGUMENT,2) = '/T'    then TRACE   = 1
  185.         otherwise Nop
  186.        end
  187.     end
  188.  
  189.     if SRVNAME = '' then signal GETHELP
  190.  
  191.     if \MUTE
  192.      then do
  193.              Topic1='SETWELCOME'
  194.              Topic_String.Topic1.1=SRVNAME;
  195.              Topic_String.Topic1.2=INPF;
  196.              Topic_String.Topic1.3=LOGF;
  197.              Topic_String.Topic1.4=CHKF;
  198.              Topic_String.Topic1.5=PIPE' ';
  199.              Topic_List='WELCOMELOGO' Topic1 'SETGRPS';
  200.              Call GETANS
  201.              Parse VALUE SysCurPos() With Old_R Old_C; '@pause'
  202.              Call SysCurPos Old_R, Old_C; say ESC'[K'
  203.           end
  204.      else do
  205.              say 'ServerName =' SRVNAME
  206.              say 'InputFile  =' INPF
  207.              say 'LogFile    =' LOGF
  208.              say 'CheckFile  =' CHKF
  209.           end
  210.  
  211.     Return
  212.  
  213.  CHKPWS: /*---------------------------------------------------- CHKPWS: -----*/
  214.  
  215.     RC = NetGetInfo(350, 'WKSTAINFO','')
  216.     if RC = 0
  217.      then do
  218.              ADMNAME = WKSTAINFO.UserName
  219.              PWSNAME = WKSTAINFO.ComputerName
  220.           end
  221.      else do
  222.             Call LOGIT 'Get PWS Info', ,RC
  223.             Call Quit
  224.           end
  225.     Return
  226.  
  227.  INIT: /*------------------------------------------------------ INIT: -------*/
  228.  
  229.     Call RgUtil   '/m' /* Rexx Utilities        */
  230.     Call RgUtils  '/m' /* Rexx Utilities        */
  231.     Call RgLSRXUT '/m' /* Lan Server Rexx Utils */
  232.  
  233.     Parse Upper Source . . P_NAME
  234.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  235.  
  236.    '@echo off'
  237.     ESC   = '1B'x
  238.     REDIR = '>NUL 2>NUL'
  239.  
  240.     Resource_File = 'LSMT.RSC'
  241.     Call CHKFILE Resource_File
  242.  
  243.     Return
  244.  
  245.  GETANS: /*---------------------------------------------------- GETANS: -----*/
  246.  
  247.     Vars_List =Ansi_Say(Resource_File Topic_List);
  248.     Parse VALUE SysCurPos() With Old_R Old_C;
  249.     Do While Vars_List <> '';
  250.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List;
  251.        Call SysCurPos Row, Column;
  252.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m';
  253.        End;
  254.     Call SysCurPos Old_R, Old_C;
  255.  
  256.     Return
  257.  
  258.  GETHELP: /*--------------------------------------------------- GETHELP: ----*/
  259.  
  260.     if \MUTE
  261.      then do
  262.              Topic1='SETHELP'
  263.              Topic_String.Topic1.1=PRGN;
  264.              Topic_List=Topic1;
  265.              Call GETANS
  266.           end
  267.      else say 'Incorrect options.'
  268.  
  269.     Call QUIT
  270.  
  271.     Return
  272.  
  273.  CHKFILE: /*--------------------------------------------------- CHKFILE: ----*/
  274.  
  275.     Parse Arg FILE
  276.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  277.     if RC = ''
  278.      then do
  279.              say ' File' FILE 'not found.'
  280.              Call QUIT
  281.           end
  282.      else Nop
  283.     Call Stream FILE, 'C', 'CLOSE'
  284.  
  285.     Return
  286.  
  287.  LOGIT: /*----------------------------------------------------- LOGIT: ------*/
  288.  
  289.     FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
  290.     RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
  291.  
  292.     Return
  293.  
  294.  QUIT: /*------------------------------------------------------ QUIT: -------*/
  295.  
  296.     Call LineOut 'LSMT.END', PRGN, 1
  297.     Call Stream  'LSMT.END', 'C', 'CLOSE'
  298.     Call Stream   INPF,      'C', 'CLOSE'
  299.     Call Stream   LOGF,      'C', 'CLOSE'
  300.     Call Stream   CHKF,      'C', 'CLOSE'
  301.     Exit ExitCode
  302.  
  303.  /*--------------------------------------------------------------------------*/
  304.