home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 8 Other
/
08-Other.zip
/
lsmt213c.zip
/
setgrps1.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-10-09
|
9KB
|
304 lines
/*---------------------------------------------------------------------------*\
| SET all GROUPS to a LAN Server 3.0 and higher |
| from an ASCII File |
| (C) Alain Rykaert IBM Belgium SEP95-MAY96 |
\*---------------------------------------------------------------------------*/
Parse Arg Option
Call INIT /* Initialisation of DLL's and other stuff*/
Call CHKOPT /* Check Options & display Welcome*/
Call CHKPWS /* Check the PWS & Admin name*/
Call MAIN /* do the main job*/
Call QUIT /* Quit*/
MAIN:/* ------------------------------------------------------ MAIN: -------*/
Call Time('R')
'if exist' CHKF 'del' CHKF
EC = 0
ExitCode = X2D('FE00') /* Good CID Return code*/
do while Lines(INPF)
LLINE = LineIN(INPF)
OLINE = LLINE
parse value LLINE with OPT ';' LLINE
select
when OPT = '',
| LLINE = '',
| Left(Strip(OPT),1) = '*' then Iterate
when Translate(OPT) = 'OPT' then Call COLUMNS
when Translate(OPT) = 'A' then Call ADDGROUP
when Translate(OPT) = 'D' then Call DELGROUP
when Translate(OPT) = 'U' then Call UPDGROUP
otherwise Iterate
end
if EC
then do
Call LineOut CHKF, OLINE
EC = 0
ExitCode = X2D('1604') /* Bad CID return code*/
end
else Nop
end
say '0909'x 'Total Time =' Trunc(Time('E'),2)
Return
ADDGROUP:/* -------------------------------------------------- ADDGROUP: ---*/
EC = 0
i = 0
do while LLINE <> ''
i = i + 1
COLNAME = Strip(COLNAME.i)
parse value LLINE with VALUE ';' LLINE
GROUPINFO.COLNAME = Strip(VALUE)
end
if TRACE
then do j = 1 to COLT
COLNAME = Strip(COLNAME.j)
say '09'x '>'GROUPINFO.COLNAME'<'
end
else Nop
RC = NetAdd(70, 'GROUPINFO', '\\'SRVNAME)
if RC = 0
then RC = ''
else EC = 1
Call LOGIT 'Add Group', GROUPINFO.NAME, RC
Return
DELGROUP: /*-------------------------------------------------- DELGROUP: ---*/
EC = 0
i = 0
do while LLINE <> ''
i = i + 1
COLNAME = Strip(COLNAME.i)
parse value LLINE with VALUE ';' LLINE
GROUPINFO.COLNAME = Strip(VALUE)
end
RC = NetDelete(70, '\\'SRVNAME, GROUPINFO.NAME)
if RC = 0
then RC = ''
else EC = 1
Call LOGIT 'Delete Group', GROUPINFO.NAME, RC
Return
UPDGROUP: /*-------------------------------------------------- UPDGROUP: ---*/
EC = 0
i = 0
do while LLINE <> ''
i = i + 1
COLNAME = Strip(COLNAME.i)
parse value LLINE with VALUE ';' LLINE
GROUPINFO.COLNAME = Strip(VALUE)
end
if TRACE
then do j = 1 to COLT
COLNAME = Strip(COLNAME.j)
say '09'x '>'GROUPINFO.COLNAME'<'
end
else Nop
/* Get OLD Groups settings */
RC = NetGetInfo(70, 'OLDINFO', '\\'SRVNAME, GROUPINFO.NAME)
if RC = 0
then RC = ''
else do
Call LOGIT 'Get Groups', GROUPINFO.NAME, RC
Return
end
do j = 1 to COLT
COLNAME = Strip(COLNAME.j)
if OLDINFO.COLNAME <> GROUPINFO.COLNAME
then do
select
when GROUPNAME = 'ADMINSA'
then do
end
otherwise Call SETINFO
end
end
else Nop
end
Return
SETINFO: /*--------------------------------------------------- SETINFO: ----*/
RC = NetSetInfo(70, COLNAME, GROUPINFO.COLNAME, '\\'SRVNAME, GROUPINFO.NAME)
if RC = 0
then RC = ''
else EC = 1
if COLNAME = 'PASSWORD'
then Call LOGIT 'Update Groups', GROUPINFO.NAME '-' '****', RC
else Call LOGIT 'Update Groups', GROUPINFO.NAME '-' GROUPINFO.COLNAME, RC
Return
COLUMNS: /*--------------------------------------------------- COLUMNS: ----*/
BANNER = 'OPT'
i = 0
do while LLINE <> ''
i = i + 1
parse value LLINE with COLNAME.i ';' LLINE
BANNER = BANNER';'COLNAME.i
end
COLT = i /* Total numbers of columns */
Call LineOut CHKF, BANNER
Return
CHKOPT: /*---------------------------------------------------- CHKOPT: -----*/
SRVNAME = '';
INPF = 'GROUPS1.CSV';
LOGF = 'LSMT.LOG';
CHKF = 'GROUPS1.CHK';
PIPE = '';
TRACE = 0;
MUTE = 0;
OPTION = Translate(OPTION)
do while OPTION <> ''
Parse value OPTION with ARGUMENT ' ' OPTION
select
when Left(ARGUMENT,5) = '/SRV:' then SRVNAME = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/INP:' then INPF = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/LOG:' then LOGF = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/CHK:' then CHKF = Substr(ARGUMENT,6)
when Left(ARGUMENT,5) = '/PIP:' then PIPE = Substr(ARGUMENT,6)
when Left(ARGUMENT,2) = '/M' then MUTE = 1
when Left(ARGUMENT,2) = '/T' then TRACE = 1
otherwise Nop
end
end
if SRVNAME = '' then signal GETHELP
if \MUTE
then do
Topic1='SETWELCOME'
Topic_String.Topic1.1=SRVNAME;
Topic_String.Topic1.2=INPF;
Topic_String.Topic1.3=LOGF;
Topic_String.Topic1.4=CHKF;
Topic_String.Topic1.5=PIPE' ';
Topic_List='WELCOMELOGO' Topic1 'SETGRPS';
Call GETANS
Parse VALUE SysCurPos() With Old_R Old_C; '@pause'
Call SysCurPos Old_R, Old_C; say ESC'[K'
end
else do
say 'ServerName =' SRVNAME
say 'InputFile =' INPF
say 'LogFile =' LOGF
say 'CheckFile =' CHKF
end
Return
CHKPWS: /*---------------------------------------------------- CHKPWS: -----*/
RC = NetGetInfo(350, 'WKSTAINFO','')
if RC = 0
then do
ADMNAME = WKSTAINFO.UserName
PWSNAME = WKSTAINFO.ComputerName
end
else do
Call LOGIT 'Get PWS Info', ,RC
Call Quit
end
Return
INIT: /*------------------------------------------------------ INIT: -------*/
Call RgUtil '/m' /* Rexx Utilities */
Call RgUtils '/m' /* Rexx Utilities */
Call RgLSRXUT '/m' /* Lan Server Rexx Utils */
Parse Upper Source . . P_NAME
PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
'@echo off'
ESC = '1B'x
REDIR = '>NUL 2>NUL'
Resource_File = 'LSMT.RSC'
Call CHKFILE Resource_File
Return
GETANS: /*---------------------------------------------------- GETANS: -----*/
Vars_List =Ansi_Say(Resource_File Topic_List);
Parse VALUE SysCurPos() With Old_R Old_C;
Do While Vars_List <> '';
Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List;
Call SysCurPos Row, Column;
Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m';
End;
Call SysCurPos Old_R, Old_C;
Return
GETHELP: /*--------------------------------------------------- GETHELP: ----*/
if \MUTE
then do
Topic1='SETHELP'
Topic_String.Topic1.1=PRGN;
Topic_List=Topic1;
Call GETANS
end
else say 'Incorrect options.'
Call QUIT
Return
CHKFILE: /*--------------------------------------------------- CHKFILE: ----*/
Parse Arg FILE
RC = Stream(FILE, 'C', 'QUERY EXIST')
if RC = ''
then do
say ' File' FILE 'not found.'
Call QUIT
end
else Nop
Call Stream FILE, 'C', 'CLOSE'
Return
LOGIT: /*----------------------------------------------------- LOGIT: ------*/
FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
Return
QUIT: /*------------------------------------------------------ QUIT: -------*/
Call LineOut 'LSMT.END', PRGN, 1
Call Stream 'LSMT.END', 'C', 'CLOSE'
Call Stream INPF, 'C', 'CLOSE'
Call Stream LOGF, 'C', 'CLOSE'
Call Stream CHKF, 'C', 'CLOSE'
Exit ExitCode
/*--------------------------------------------------------------------------*/