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

  1. /*---------------------------------------------------------------------------*\
  2. |   Check all logon assignments whether corresponding aliases exists          |
  3. |   if aliases does not exist ask for deletion of logon assignment            |
  4. |       (C) Alain Rykaert IBM Belgium & Hermann Pauli IBM Germany SEP95-MAY96 |
  5. |                                                                 FEB2000     |
  6. \*---------------------------------------------------------------------------*/
  7.  
  8.     Parse Arg Option
  9.  
  10.     Call INIT                     /* Initalisation of DLL's and other stuff*/
  11.     Call CHKOPT                          /* Check Options & display Welcome*/
  12.     Call CHKPWS                               /* Check the PWS & Admin name*/
  13.     Call MAIN                                            /* do the main job*/
  14.     Call QUIT                                                       /* Quit*/
  15.  
  16.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  17.  
  18.     Call Time('R')
  19.  
  20.     /* Get list of all aliases definend on server */
  21.     RC = NetEnumerate(NETALIAS, 'ALIAS' , '\\'SRVNAME)
  22.     if RC = 0
  23.      then nop
  24.      else do
  25.              Call LOGIT 'NetEnum. Alias' ,'Server \\' || SRVNAME , RC
  26.              call Quit
  27.           end
  28.  
  29.     /* build list with all existing aliases */
  30.     ALIASOK. = 0
  31.     do i = 1 to ALIAS.0
  32.        AliasN = ALIAS.i
  33.        ALIASOK.AliasN = 1
  34.     end
  35.  
  36.     /* get all defined userids */
  37.  /* RC = NetEnumerate(NETUSER, 'USERID', '\\'SRVNAME) */
  38.     RC = WfrxUserEnum('\\'SrvName,'UserID')
  39.     if RC = 0
  40.      then nop
  41.      else do
  42.              Call LOGIT 'NetEnum. User' , 'Server \\' || SRVNAME , RC
  43.              call Quit
  44.           end
  45.  
  46.     call RxStemSort 'USERID'
  47.  
  48.     ErrorNr     = 0                              /* number of found incons.*/
  49.     ToDel.0     = 0
  50.  
  51.     do i = 1 to USERID.0
  52.        if trace
  53.         then say '0909'x i ':' USERID.i
  54.         else do
  55.                 say  '0909'x 'Total Users =' i
  56.                 if \MUTE
  57.                  then do
  58.                          Call SysCurState OFF
  59.                          parse value SysCurPos() with row col
  60.                          row = row - 1
  61.                          Call SysCurPos row,0
  62.                       end
  63.                  else Nop
  64.              end
  65.  
  66.        RC = NetGetInfo(NETLOGONASN, 'LASSINFO', '\\'SRVNAME, USERID.i)
  67.        if RC = 0
  68.         then do j = 1 to LASSINFO.count
  69.                 AliasN = LASSINFO.j.Alias
  70.                 if \ALIASOK.AliasN
  71.                  then do
  72.                          ErrorNr = ErrorNr + 1
  73.  
  74.                          call Logit 'pay attention',,
  75.                                   Left(AliasN,8,' ') '<-->' USERID.I,,
  76.                                   'inconsistency found'
  77.  
  78.                          if DELETE
  79.                           then do
  80.                                   ToDel.0 = ErrorNr
  81.                                   ToDel.ErrorNr.Alias = AliasN
  82.                                   ToDel.ErrorNr.User  = USERID.I
  83.                                end
  84.                           else nop
  85.                       end
  86.                  else nop
  87.              end
  88.         else if left(strip(RC),1) <> 3
  89.               then do
  90.                       call LOGIT 'NetGetInfo LA' , USERID.i , RC
  91.                       call Quit
  92.                    end
  93.               else nop                      /* no assignments for this user*/
  94.     end
  95.  
  96.     if ToDel.0 > 0
  97.      then call DelIncon
  98.      else nop
  99.  
  100.  
  101.     say ; say '0909'x 'Total Time  =' Trunc(Time('E'),2)
  102.  
  103.     Return
  104.  
  105.  
  106.  DelIncon:/* -------------------------------------------------- DelIncon: ---*/
  107.  
  108.     /* get path for IBMLAN$ to be used for dummy Alias */
  109.     NetName = 'IBMLAN$'
  110.  
  111.     RC = NetGetInfo(NETSHARE, 'shareInfo', '\\'SrvName, NetName)
  112.  
  113.     if RC = '0'
  114.      then nop
  115.      else do
  116.              call Logit 'NetGetInfo Share' , '\\'SRVNAME NetName , RC
  117.              call Quit
  118.              return
  119.           end
  120.  
  121.     /* info for dummy alias to delete the assignment */
  122.     AliasInfo.remark   = 'Temporary alias'
  123.     AliasInfo.server   = '\\'SRVNAME
  124.     AliasInfo.location = 'Within Domain'
  125.     AliasInfo.mode     = 'At Requester use'
  126.     AliasInfo.type     = 'Files'
  127.  
  128.     /* find dummy path for temporary Alias */
  129.     AliasInfo.path     = '\\'SRVNAME'\IBMLAN$\DUMMY???'
  130.     AliasInfo.path     = SysTempFileName(AliasInfo.path)
  131.  
  132.     parse var AliasInfo.path . 'IBMLAN$' AliasInfo.path
  133.  
  134.     AliasInfo.path     = shareInfo.path || AliasInfo.path
  135.  
  136.     DelNr = 0
  137.     do i = 1 to ToDel.0
  138.        /* add dummy alias to delete the assignment */
  139.        AliasInfo.name     = ToDel.i.Alias
  140.        RC = NetAdd(NETALIAS, 'AliasInfo', '\\'SRVNAME)
  141.     end
  142.  
  143.     do i = 1 to ToDel.0
  144.        /* delete the assignment                    */
  145.        RC = NetDelete(NETLOGONASN, '\\'SRVNAME, ToDel.i.User,ToDel.i.Alias)
  146.        if RC = 0
  147.         then do
  148.                 call Logit 'Delete Incons.',,
  149.                 Left(ToDel.i.Alias,8,' ') '<-->' ToDel.i.User , ''
  150.                 DelNr = DelNr + 1
  151.              end
  152.         else do
  153.                 call Logit 'NetDelete LA' ,,
  154.                            '\\'SRVNAME ToDel.i.User ToDel.i.Alias ':' RC
  155.                 call Quit
  156.              end
  157.     end
  158.  
  159.     do i = 1 to ToDel.0
  160.        /* delete the dummy alias                   */
  161.        RC = NetDelete(NETALIAS, '\\'SRVNAME, ToDel.i.Alias)
  162.     end
  163.  
  164.     Return
  165.  
  166.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  167.  
  168.     SRVNAME = ''; LOGF = 'LSMT.LOG'; PIPE = ''
  169.     TRACE = 0 ; MUTE = 0 ; DELETE = 0
  170.     OPTION = Translate(OPTION)
  171.     do while OPTION <> ''
  172.        Parse value OPTION with ARGUMENT ' ' OPTION
  173.        select
  174.         when Left(ARGUMENT,5) = '/SRV:' then SRVNAME = Substr(ARGUMENT,6)
  175.         when Left(ARGUMENT,5) = '/INP:' then INPF    = Substr(ARGUMENT,6)
  176.         when Left(ARGUMENT,5) = '/LOG:' then LOGF    = Substr(ARGUMENT,6)
  177.         when Left(ARGUMENT,5) = '/CHK:' then CHKF    = Substr(ARGUMENT,6)
  178.         when Left(ARGUMENT,5) = '/PIP:' then PIPE    = Substr(ARGUMENT,6)
  179.         when Left(ARGUMENT,2) = '/D'    then DELETE  = 1
  180.         when Left(ARGUMENT,5) = '/M'    then MUTE    = 1
  181.         when Left(ARGUMENT,2) = '/T'    then TRACE   = 1
  182.         otherwise Nop
  183.        end
  184.     end
  185.  
  186.     if SRVNAME = '' then signal GETHELP
  187.     if \MUTE
  188.      then do
  189.               Topic1='CHKASSGNWELCOME'
  190.               Topic_String.Topic1.1=SRVNAME;
  191.               Topic_String.Topic1.2=LOGF;
  192.               If DELETE
  193.               Then Topic_String.Topic1.3='Yes';
  194.               Else Topic_String.Topic1.3='No';
  195.               Topic_List='WELCOMELOGO' Topic1;
  196.               Call GETANS
  197.               Parse VALUE SysCurPos() With Old_R Old_C; '@pause'
  198.               Call SysCurPos Old_R, Old_C; say ESC'[K'
  199.           end
  200.      else do
  201.              say 'ServerName =' SRVNAME
  202.              say 'LogFile    =' LOGF
  203.              if Delete then say 'Delete     = yes'
  204.             'pause'
  205.           end
  206.     Return
  207.  
  208.  CHKPWS:/* ---------------------------------------------------- CHKPWS: -----*/
  209.  
  210.     RC = NetGetInfo(350, 'WKSTAINFO','')
  211.     if RC = 0
  212.      then do
  213.              ADMNAME = WKSTAINFO.UserName
  214.              PWSNAME = WKSTAINFO.ComputerName
  215.           end
  216.      else do
  217.             Call LOGIT 'Get PWS Info', ,RC
  218.             Call Quit
  219.           end
  220.     Return
  221.  
  222.  INIT:/* ------------------------------------------------------ INIT: -------*/
  223.  
  224.     Call RgUtil   '/m'                                    /* Rexx Utilities*/
  225.     Call RgUtils  '/m'                                    /* Rexx Utilities*/
  226.     Call RgLSRXUT '/m'                             /* Lan Server Rexx Utils*/
  227.  
  228.     Parse Upper Source . . P_NAME
  229.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  230.  
  231.    '@echo off'
  232.     ESC     = '1B'x
  233.     REDIR   = '>NUL 2>NUL'
  234.  
  235.     NETLOGONASN = 52                                 /* code for LSREXX API*/
  236.     NETSHARE    = 190
  237.     NETUSER     = 280
  238.     NETALIAS    = 20
  239.     NETWKSTA    = 350
  240.  
  241.     Resource_File = 'LSMT.RSC'
  242.     Call CHKFILE Resource_File
  243.  
  244.     Return
  245.  
  246.  GETANS:/* ---------------------------------------------------- GETANS: -----*/
  247.  
  248.     Vars_List =Ansi_Say(Resource_File Topic_List);
  249.     Parse VALUE SysCurPos() With Old_R Old_C;
  250.     Do While Vars_List <> '';
  251.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List;
  252.        Call SysCurPos Row, Column;
  253.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m';
  254.        End;
  255.     Call SysCurPos Old_R, Old_C;
  256.  
  257.     Return
  258.  
  259.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  260.  
  261.     if \MUTE
  262.      then do
  263.              Topic1='CHKASSGNHELP'
  264.              Topic_String.Topic1.1=PRGN;
  265.              Topic_List=Topic1;
  266.              Call GETANS
  267.           end
  268.      else say 'Incorrect options.'
  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 COLF, 'C', 'CLOSE'
  299.     Call Stream LOGF, 'C', 'CLOSE'
  300.     Exit
  301.  
  302.  /*--------------------------------------------------------------------------*/
  303.