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

  1. /*---------------------------------------------------------------------------*\
  2. |  GETALL  - Link all GETxxx.CMD & create object on the WorkPlaceShell        |
  3. |                         (C) Alain Rykaert & Dieter Van Besien - JAN96-OCT96 |
  4. \*---------------------------------------------------------------------------*/
  5.  
  6.     Version = '2.05'
  7.  
  8.  /*- Start of Variables -----------------------------------------------------*/
  9.  
  10.     PRGNAME.0 = 8          ; OUTPUT.0 =  PRGNAME.0
  11.     PRGNAME.1 = 'GetSrvs'  ; OUTPUT.1 = 'Servers.CSV'
  12.     PRGNAME.2 = 'GetUsers' ; OUTPUT.2 = 'Users.CSV'
  13.     PRGNAME.3 = 'GetGrps1' ; OUTPUT.3 = 'Groups1.CSV'
  14.     PRGNAME.4 = 'GetGrps2' ; OUTPUT.4 = 'Groups2.CSV'
  15.     PRGNAME.5 = 'GetAlias' ; OUTPUT.5 = 'Alias.CSV'
  16.     PRGNAME.6 = 'GetACL'   ; OUTPUT.6 = 'Acl.CSV'
  17.     PRGNAME.7 = 'GetAssgn' ; OUTPUT.7 = 'Assgn.CSV'
  18.     PRGNAME.8 = 'GetAppl'  ; OUTPUT.8 = 'Appl.CSV'
  19.  /* PRGNAME.9 = 'GetSel'   ; OUTPUT.9 = 'Selector.CSV' */
  20.  
  21.  /* if the GETSEL procedure is needed, remove the remarks symbols from
  22.     previous line and increment the value of PRGNAME.0 by 1 on line 8    */
  23.  
  24.  /*- End of Variables -------------------------------------------------------*/
  25.  
  26.     Parse Arg Option
  27.  
  28.     Call Init                    /* Initialisation of DLL's and other stuff*/
  29.     Call ChkOpt                                            /* Check Options*/
  30.     Call ChkCSD                  /* Check current CSD levels of PWS and SRV*/
  31.     Call Main                                          /* do the main thing*/
  32.     Call Quit                                         /* Quit the procedure*/
  33.  
  34.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  35.  
  36.     Call ChkServer DCName                /* Check if this is the Primary DC*/
  37.  
  38.  /* Get the Domain name from the DC-PR */
  39.  
  40.     Call SysFileSearch 'DOMAIN =', '\\'DCName'\ibmlan$\ibmlan.ini', 'FILE.'
  41.     if FILE.0 > 0
  42.      then do i = 1 to FILE.0
  43.              if POS(';', Translate(FILE.i)) = 0
  44.               then Parse Value FILE.i with . '=' DomainName .
  45.               else Nop
  46.           end
  47.      else do
  48.              say ESC'[0;1;31m Unable to determine the Domains name',
  49.                     'from the Primary Domain Controller' DCName ESC'[0m'
  50.             'Pause'
  51.              Exit
  52.           end
  53.  
  54.     say
  55.     say '09'x ESC'[0;1;35m The Domains name is' DomainName ESC'[0m'
  56.  
  57.  /* Check if a directory exist for this domain. If needed, create it */
  58.  
  59.     TargetDir = Directory()'\'DomainName
  60.  
  61.     Call ChkDir TargetDir
  62.  
  63.     do i = 1 to PRGNAME.0
  64.        'Call' PRGNAME.i '/SRV:'DCName '/OUT:'TargetDir'\'OUTPUT.i '/LOG:'TargetDir'\'LOGF '/PIP:'PIPE MUTE
  65. /*      Call MakeShadow OUTPUT.i Location    /* Make Shadow of Output_Files*/
  66.      */
  67.     end
  68.  
  69. /*  Call MakeShadow 'HOMEACL.CSV' Location    /* Make Shadow of HOMEACL.CSV*/
  70.   */
  71.     Call SysSetObjectData Directory()'\LSMT.LOG', 'ICONFILE='Directory()'\LOG.ICO'
  72. /*
  73.     Call MakeShadow 'LSMT.LOG'    Location       /* Make Shadow of LSMT.LOG*/
  74.  
  75.     Call MakeShadow 'USERS.PWD'   Location      /* Make Shadow of USERS.PWD*/
  76.   */
  77.  
  78.  /* Display Get Passwords message */
  79.     Topic_List = 'GETPASSWORDS'
  80.     Call GETANS
  81.  
  82.     Return
  83.  
  84.  INIT:/* ------------------------------------------------------ INIT: -------*/
  85.  
  86.    '@echo off'
  87.     ESC = '1B'x
  88.     Call RgUtil '/M'                                 /* Init Rexx Utilities*/
  89.     Call RgUtils  '/M'                                    /* Rexx Utilities*/
  90.     Call RgLSRXUT '/M'                             /* Lan Server Rexx Utils*/
  91.  
  92.     BD = Left(SysSearchPath('PATH', 'CMD.EXE'), 2)          /* BOOT   Drive*/
  93.  
  94.     Parse Upper Source . . P_NAME
  95.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  96.  
  97.     Resource_File = 'LSMT.RSC'                 /* Ansi Topics Resource File*/
  98.     Call CHKFILE Resource_File
  99.  
  100.     Return
  101.  
  102.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  103.  
  104.     DCNAme = ''
  105.     LOGF   = 'LSMT.LOG'
  106.     PIPE   = ''
  107.     MUTE   = ''
  108.  
  109.     OPTION = Translate(OPTION)
  110.     do while OPTION <> ''
  111.        Parse value OPTION with ARGUMENT ' ' OPTION
  112.        select
  113.         when Left(ARGUMENT,5) = '/SRV:'  then DCName = Substr(ARGUMENT,6)
  114.         when Left(ARGUMENT,5) = '/LOG:'  then LOGF   = Substr(ARGUMENT,6)
  115.         when Left(ARGUMENT,5) = '/PIP:'  then PIPE   = Substr(ARGUMENT,6)
  116.         when Left(ARGUMENT,2) = '/M'     then MUTE   = '/M'
  117.         otherwise Nop
  118.        end
  119.     end
  120.  
  121.     if DCName = '',
  122.      | Left(DCName,2) = '\\'
  123.        then signal GETHELP
  124.  
  125.     Return
  126.  
  127.  MAKESHADOW:/* --------------------------------------------------------------*/
  128.  
  129.     Parse Arg Title FileName Location
  130.  
  131.     if Stream(FileName, 'C', 'QUERY EXISTS') = ''
  132.      then Nop
  133.      else do
  134.              Class    = 'WPShadow'
  135.              Title    =  Title
  136.              Location =  Location
  137.              Setup    = 'SHADOWID='FileName
  138.              Update   = 'Update'
  139.  
  140.              Call CreateObj
  141.  
  142.           end
  143.  
  144.     Return
  145.  
  146.  CREATEOBJ:/* ------------------------------------------------- CREATEOBJ: --*/
  147.  
  148.     RC = SysCreateObject(Class, Title, Location, Setup, Update)
  149.     if RC <> 1
  150.        then say ESC'[0;1;41m ErrorCode' RC Title ESC'[0m'
  151.        else Nop
  152.  
  153.     Return
  154.  
  155.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  156.  
  157.     Topic1                = 'LSMTHELP'
  158.     Topic_String.Topic1.1 =  PRGN
  159.     Topic_String.Topic1.2 =  PRGN
  160.     Topic_List            =  Topic1
  161.     Call GETANS
  162.     Call Quit
  163.  
  164.     Return
  165.  
  166.  GETANS:/* ---------------------------------------------------- GETANS: -----*/
  167.  
  168.     Vars_List = Ansi_Say(Resource_File Topic_List)
  169.     Parse VALUE SysCurPos() With Old_R Old_C
  170.     Do While Vars_List <> ''
  171.        Parse Value Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List
  172.        Call SysCurPos Row, Column
  173.        Say X2C(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m'
  174.     End
  175.     Call SysCurPos Old_R, Old_C
  176.  
  177.     Return
  178.  
  179.  CHKFILE:/* --------------------------------------------------- CHKFILE: ----*/
  180.  
  181.     Parse Arg FILE
  182.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  183.     if RC = ''
  184.      then do
  185.              say ' File' FILE 'not found.'
  186.              Call Quit
  187.           end
  188.      else Nop
  189.  
  190.     Return
  191.  
  192.  CHKCSD:/* ---------------------------------------------------- CHKCSD: -----*/
  193.  
  194.     BD = Left(SysSearchPath('PATH', 'CMD.EXE'), 2)          /* BOOT   Drive*/
  195.     ID = Left(SysSearchPath('PATH', 'NET.EXE'), 2)          /* IBMLAN Drive*/
  196.  
  197.     if BD = '' | ID = ''
  198.      then do
  199.              say ESC'[0;1;36m Unable to determine the OS/2 Boot Drive' ESC'[0m'
  200.              say ESC'[0;1;36m or the OS/2 Lan Requester Drive.'        ESC'[0m'
  201.              Call Quit
  202.           end
  203.  
  204.     REQ_CSD = SubStr(LineIn(ID'\IBMLAN\SYSLEVEL.REQ'),48,4)
  205.     Call Stream ID'\IBMLAN\SYSLEVEL.REQ', 'C', 'CLOSE'
  206.  
  207.     SRV_CSD = SubStr(LineIn('\\'DCName'\IBMLAN$\SYSLEVEL.SRV'),48,4)
  208.     Call Stream '\\'DCName'\IBMLAN$\SYSLEVEL.SRV', 'C', 'CLOSE'
  209.  
  210.     if MUTE = '/M'
  211.      then Nop
  212.      else do
  213.              say ESC'[0;1;33m +-------------------+'ESC'[0m'
  214.              say ESC'[0;1;33m ! CSD on PWS =' REQ_CSD '!'ESC'[0m'
  215.              say ESC'[0;1;33m ! CSD on SRV =' SRV_CSD '!'ESC'[0m'
  216.              say ESC'[0;1;33m +-------------------+'ESC'[0m'
  217.           end
  218.  
  219.     if REQ_CSD < '7045' | SRV_CSD < '7045'
  220.      then do
  221.              say ' 'ESC'[0;1;41m    * * * W A R N I N G * * *      ' ESC'[0m'
  222.              say ' 'ESC'[0;41m The minimum Lan Requester & Server'   ESC'[0m'
  223.              say ' 'ESC'[0;41m version must be : 3.0 CSD IPx7045 '   ESC'[0m'
  224.             'pause'
  225.           end
  226.      else Nop
  227.  
  228.     Return
  229.  
  230.  CHKSERVER:/* ------------------------------------------------- CHKSERVER: --*/
  231.  
  232.     Parse Arg Server
  233.  
  234.     say
  235.     say ESC'[0;1;33m Check if' Server 'is a Primary Domain Controller ...' ESC'[0m'
  236.  
  237.     Parse value SysCurPos() with ROW COL
  238.     Call SysCurPos ROW -1, 55
  239.  
  240.     RC = NetGetInfo(370, 'ServerModalInfo', '\\'Server)
  241.  
  242.     if RC = 0 & ServerModalInfo.Role = 'Primary server in the domain'
  243.      then say ESC'[0;1;42m OK' ESC'[0m'
  244.      else do
  245.              say ESC'[0;1;41m Not OK' ESC'[0m'
  246.             'start popup "This is not a Primary DC" "LSMT Message"'
  247.              Call Quit
  248.           end
  249.  
  250.     Return
  251.  
  252.  CHKDIR:/* ---------------------------------------------------- CHKDIR: ---*/
  253.  
  254.     Parse Arg Dir_Name
  255.  
  256.     RCode = 0                                      /* Reset the Return Code*/
  257.  
  258.     if Stream(Dir_Name, 'C', 'QUERY EXIST') <> ''       /* is this a file ?*/
  259.      then RCode = 1    /* Bad RC, there already exist a file with this name*/
  260.      else do
  261.              Call SysFileTree Dir_Name, 'DIREXIST', 'DO'/* does this DIR exist ?*/
  262.              if DIREXIST.0 = 0
  263.               then do
  264.                       RC = SysMKDir(Dir_Name)
  265.                       if RC <> 0
  266.                        then RCode = 1
  267.                        else Nop
  268.                    end
  269.               else Nop
  270.           end
  271.  
  272.     if RCode = 1
  273.      then do
  274.              Call Beep 1000,100
  275.              say 'Error while creating' Dir_Name
  276.              Pull
  277.              Exit
  278.           end
  279.      else Nop
  280.  
  281.     Return
  282.  
  283.  QUIT:/* ------------------------------------------------------ QUIT: -------*/
  284.  
  285.     say
  286.     say ESC'[0;1;33m Done. Press the [Enter] key to leave' ESC'[0m'
  287.  
  288.     Pull
  289.  
  290.     Exit
  291.  
  292.  /*--------------------------------------------------------------------------*/
  293.  
  294.