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

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