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

  1. /*---------------------------------------------------------------------------*\
  2. |   SET all PASSWORDS to a 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.  
  8.     Call INIT                    /* Initialisation of DLL's and other stuff*/
  9.     Call CHKOPT                          /* Check Options & display Welcome*/
  10.     Call CHKPWS                               /* Check the PWS & Admin name*/
  11.     Call MAIN                                            /* do the main job*/
  12.     Call QUIT                                                       /* Quit*/
  13.  
  14.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  15.  
  16.     Call Time('R')
  17.    'if exist' CHKF 'del' CHKF
  18.     EC = 0
  19.  
  20.    'if not exist \\'SRVNAME'\IBMLAN$\NETPROG\PWDIMP.EXE copy PWDIMP.EXE \\'SRVNAME'\IBMLAN$\NETPROG'
  21.  
  22.     do while Lines(INPF)
  23.        LLINE = LineIN(INPF)
  24.        parse value LLINE with USERID ':' PASSWORD .
  25.        if \MUTE
  26.         then do
  27.                 Call SysCurState OFF
  28.                 Call SysCurPos 19,20
  29.                 say ESC'[K'
  30.                 Call SysCurPos 19,20
  31.              end
  32.         else Nop
  33.        say 'UserID :' USERID
  34.        Call LOGIT LLINE
  35.       'net admin \\'SRVNAME '/C PWDIMP' LLINE '>>' LOGF
  36.     end
  37.  
  38.     say '0909'x 'Total Time  =' Trunc(Time('E'),2)
  39.  
  40.     Return
  41.  
  42.  CHKOPT:/* ---------------------------------------------------- CHKOPT: -----*/
  43.  
  44.     SRVNAME = '';
  45.     INPF = 'USERS.PWD';
  46.     LOGF = 'PASSWORD.LOG';
  47.     CHKF = 'USERS.CHK';
  48.     PIPE = '';
  49.     TRACE = 0;
  50.     MUTE  = 0;
  51.  
  52.     OPTION = Translate(OPTION)
  53.     do while OPTION <> ''
  54.        Parse value OPTION with ARGUMENT ' ' OPTION
  55.        select
  56.         when Left(ARGUMENT,5) = '/SRV:' then SRVNAME = Substr(ARGUMENT,6)
  57.         when Left(ARGUMENT,5) = '/INP:' then INPF    = Substr(ARGUMENT,6)
  58.         when Left(ARGUMENT,5) = '/LOG:' then LOGF    = Substr(ARGUMENT,6)
  59.         when Left(ARGUMENT,5) = '/CHK:' then CHKF    = Substr(ARGUMENT,6)
  60.         when Left(ARGUMENT,5) = '/PIP:' then PIPE    = Substr(ARGUMENT,6)
  61.         when Left(ARGUMENT,2) = '/M'    then MUTE    = 1
  62.         when Left(ARGUMENT,2) = '/T'    then TRACE   = 1
  63.         otherwise Nop
  64.        end
  65.     end
  66.  
  67.     if SRVNAME = '' then signal GETHELP
  68.  
  69.     if \MUTE
  70.      then do
  71.              Topic1='SETWELCOME'
  72.              Topic_String.Topic1.1=SRVNAME;
  73.              Topic_String.Topic1.2=INPF;
  74.              Topic_String.Topic1.3=LOGF;
  75.              Topic_String.Topic1.4=CHKF;
  76.              Topic_String.Topic1.5=PIPE' ';
  77.              Topic_List='WELCOMELOGO' Topic1 'SETPWD';
  78.              Call GETANS
  79.              Parse VALUE SysCurPos() With Old_R Old_C; '@pause'
  80.              Call SysCurPos Old_R, Old_C; say ESC'[K'
  81.           end
  82.      else do
  83.              say 'ServerName =' SRVNAME
  84.              say 'InputFile  =' INPF
  85.              say 'LogFile    =' LOGF
  86.              say 'CheckFile  =' CHKF
  87.             'pause'
  88.           end
  89.  
  90.     Return
  91.  
  92.  CHKPWS:/* ---------------------------------------------------- CHKPWS: -----*/
  93.  
  94.     RC = NetGetInfo(350, 'WKSTAINFO','')
  95.     if RC = 0
  96.      then do
  97.              ADMNAME = WKSTAINFO.UserName
  98.              PWSNAME = WKSTAINFO.ComputerName
  99.           end
  100.      else do
  101.             Call LOGIT 'Get PWS Info', ,RC
  102.             Call Quit
  103.           end
  104.     Return
  105.  
  106.  INIT:/* ------------------------------------------------------ INIT: -------*/
  107.  
  108.     Call RgUtil   '/m'                                    /* Rexx Utilities*/
  109.     Call RgUtils  '/m'                                    /* Rexx Utilities*/
  110.     Call RgLSRXUT '/m'                             /* Lan Server Rexx Utils*/
  111.  
  112.     Parse Upper Source . . P_NAME
  113.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  114.  
  115.    '@echo off'
  116.     ESC   = '1B'x
  117.     REDIR = '>NUL 2>NUL'
  118.  
  119.     Call CHKFILE 'PWDIMP.EXE'          /* External program of Steve Freeman*/
  120.  
  121.     Resource_File = 'LSMT.RSC'
  122.     Call CHKFILE Resource_File
  123.  
  124.     Return
  125.  
  126.  GETANS:/* ---------------------------------------------------- GETANS: -----*/
  127.  
  128.     Vars_List =Ansi_Say(Resource_File Topic_List);
  129.     Parse VALUE SysCurPos() With Old_R Old_C;
  130.     Do While Vars_List <> '';
  131.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List;
  132.        Call SysCurPos Row, Column;
  133.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m';
  134.        End;
  135.     Call SysCurPos Old_R, Old_C;
  136.  
  137.     Return
  138.  
  139.  GETHELP:/* --------------------------------------------------- GETHELP: ----*/
  140.  
  141.     if \MUTE
  142.      then do
  143.              Topic1='SETHELP'
  144.              Topic_String.Topic1.1=PRGN;
  145.              Topic_List=Topic1;
  146.              Call GETANS
  147.           end
  148.      else say 'Incorrect options.'
  149.  
  150.     Call QUIT
  151.  
  152.     Return
  153.  
  154.  CHKFILE:/* --------------------------------------------------- CHKFILE: ----*/
  155.  
  156.     Parse Arg FILE
  157.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  158.     if RC = ''
  159.      then do
  160.              say ' File' FILE 'not found.'
  161.              Call QUIT
  162.           end
  163.      else Nop
  164.     Call Stream FILE, 'C', 'CLOSE'
  165.  
  166.     Return
  167.  
  168.  LOGIT:/* ----------------------------------------------------- LOGIT: ------*/
  169.  
  170.     Parse Arg LOGT
  171.     if \MUTE
  172.      then say ESC'[0;1;32m' LOGT ESC'[0m'
  173.      else say LOGT
  174.     LOGT = '('Date('E') Left(Time(),5) ADMNAME Substr(PWSNAME,3)')' LOGT
  175.     Call LineOut LOGF, LOGT
  176.     Call Stream  LOGF, 'C', 'CLOSE'
  177.  
  178.     if PIPE <> ''
  179.      then do
  180.              parse value RxNPOpen(PIPE) with RC HANDLE .
  181.              if RC <> 0
  182.               then Return
  183.               else do
  184.                       RC = RxNPWrite(HANDLE, LOGT)
  185.                       if RC <> 0
  186.                        then Return
  187.                        else Call RxNPClose HANDLE
  188.                    end
  189.            end
  190.      else Nop
  191.  
  192.     Return
  193.  
  194.  QUIT:/* ------------------------------------------------------ QUIT: -------*/
  195.  
  196.     Call LineOut 'LSMT.END', PRG, 1
  197.     Call Stream  'LSMT.END', 'C', 'CLOSE'
  198.     Call Stream   INPF,      'C', 'CLOSE'
  199.     Call Stream   LOGF,      'C', 'CLOSE'
  200.     Call Stream   CHKF,      'C', 'CLOSE'
  201.     Exit
  202.  
  203.  /*--------------------------------------------------------------------------*/
  204.