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

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