Prueba este truco extraido de iSeriesNetwork ********** Club Tech iSeries Systems Management Newsletter ********* An iSeries Network Publication http://www.iSeriesNetwork.com Home of iSeries NEWS Magazine Issue 65 December 11, 2002
Featured Tip: LIMITING INTERACTIVE SESSIONS FOR A USER Limiting interactive sessions was addressed in a previous Club Tech tip, which you can read online at http://www.iseriesnetwork.com/Article.cfm?ID=11927 . Essentially, you can control whether a user can have only one interactive session or an unlimited number of sessions. To limit the number of interactive sessions for a user to any given number, Herman Van der Staey posted CL program LMTACTUSR, which is run as the initial program for the user profile. You can obtain the source code by searching for "LMTACTUSR" at the iSeries Network CL Forum at http://www.iseriesnetwork.com/Forums/main.cfm?CFApp=55 . ******************************************************************** Date: December 09, 2002 06:51 AM Author: Herman ([EMAIL PROTECTED]) Subject: How to restrict the number of interactive sessions for a user ? How to restrict the number of interactive sessions for a user ? System value QLMTDEVSSN controls whether a user can have more than one work station signon, but there is no limit to the number of sessions when the value is '0'. If you want to prevent that a user can have too many interactive sessions, you can use the following program. Call this program from the initial program in the userprofile. If the userprofile is 5 times active, a message is sent and the user is forced to signoff. /* Program : LMTACTUSR */ /* System : iSeries */ /* Author : Herman Van der Staey */ /* */ /* Limit a user to 5 active interactive sessions */ /* and send a message to the user before forcing SIGN OFF. */ /* Call this program in the initial program of the userprofile. */ CHKACTUSR5: PGM DCL VAR(&CUR_USER) TYPE(*CHAR) LEN(10) /* + current user */ DCL VAR(&TOTAL) TYPE(*DEC) LEN(5 0) VALUE(0) /* API data from format JOBL0100 */ DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10) DCL VAR(&USER ) TYPE(*CHAR) LEN(10) DCL VAR(&JOBNBR ) TYPE(*CHAR) LEN(6) DCL VAR(&STATUS) TYPE(*CHAR) LEN(10) DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1) DCL VAR(&SUBTYPE) TYPE(*CHAR) LEN(1) /* Parameters for the QUSCRTUS API */ DCL VAR(&USP_NAME) TYPE(*CHAR) LEN(10) /* user + space name */ DCL VAR(&USP_LIB) TYPE(*CHAR) LEN(10) /* user + space library */ DCL VAR(&USP_QUAL) TYPE(*CHAR) LEN(20) /* user + space qualified name */ DCL VAR(&USP_TYPE) TYPE(*CHAR) LEN(10) /* user + space type */ DCL VAR(&USP_SIZE) TYPE(*CHAR) LEN(4) /* user + space size */ DCL VAR(&USP_FILL) TYPE(*CHAR) LEN(1) /* user + space fill character */ DCL VAR(&USP_AUT) TYPE(*CHAR) LEN(10) /* user + space authority */ DCL VAR(&USP_TEXT) TYPE(*CHAR) LEN(50) /* user + space text */ /* Parameters for the QUSRTVUS API */ DCL VAR(&STARTPOS) TYPE(*CHAR) LEN(4) DCL VAR(&DATALEN ) TYPE(*CHAR) LEN(4) DCL VAR(&HEADER) TYPE(*CHAR) LEN(150) /* Parameters for the QUSLJOB API */ DCL VAR(&API_USQUAL) TYPE(*CHAR) LEN(20) /* + Qualified User Space name */ DCL VAR(&API_JBQUAL) TYPE(*CHAR) LEN(26) /* + qualified jobname */ DCL VAR(&API_JBNAM) TYPE(*CHAR) LEN(10) /* + jobname */ DCL VAR(&API_USER) TYPE(*CHAR) LEN(10) /* user */ DCL VAR(&API_JOBNR) TYPE(*CHAR) LEN(6) /* job + number */ DCL VAR(&API_ERROR) TYPE(*CHAR) LEN(4) /* API + error */ DCL VAR(&API_STATUS) TYPE(*CHAR) LEN(10) /* + Status */ /* List Data Section */ DCL VAR(&LST_OFFSET) TYPE(*DEC) LEN(5 0) /* + offset of first data */ DCL VAR(&LST_SIZE) TYPE(*DEC) LEN(5 0) /* size + of data */ DCL VAR(&LST_DATA) TYPE(*CHAR) LEN(4096) DCL VAR(&LST_NBR) TYPE(*DEC) LEN(5 0) /* number + of entries in list data section */ DCL VAR(&LST_LEN) TYPE(*DEC) LEN(5 0) /* entry + length in dec */ DCL VAR(&LST_LENBIN) TYPE(*CHAR) LEN(4) /* entry + length in binary */ DCL VAR(&LST_POSBIN) TYPE(*CHAR) LEN(4) /* + position of list entry in binary */ DCL VAR(&LST_COUNT) TYPE(*DEC) LEN(5) VALUE(0) /* + counter */ RTVJOBA USER(&CUR_USER) /* Create user space */ CHGVAR VAR(&USP_NAME) VALUE('LMTACTUSR') /* set + user space name */ CHGVAR VAR(&USP_LIB) VALUE('QTEMP') /* set user + space library */ CHGVAR VAR(&USP_QUAL) VALUE(&USP_NAME *CAT + &USP_LIB) /* set user space qualified name */ CHGVAR VAR(&USP_TYPE) VALUE('MYTYPE') /* set user + space type */ CHGVAR VAR(%BIN(&USP_SIZE)) VALUE(64000) /* set + user space size */ CHGVAR VAR(&USP_FILL) VALUE(' ') /* set user space + fill character */ CHGVAR VAR(&USP_AUT) VALUE('*USE') /* set user + space authority */ CHGVAR VAR(&USP_TEXT) VALUE('my user space') + /* set user space text */ CALL PGM(QUSCRTUS) PARM(&USP_QUAL &USP_TYPE + &USP_SIZE &USP_FILL &USP_AUT &USP_TEXT) /* Execute API */ CHGVAR VAR(&API_USQUAL) VALUE(&USP_QUAL) /* User + Space name */ CHGVAR VAR(&API_JBNAM) VALUE('*ALL') /* jobname */ CHGVAR VAR(&API_USER) VALUE(&CUR_USER) /* user */ CHGVAR VAR(&API_JOBNR) VALUE('*ALL') /* job number */ CHGVAR VAR(&API_STATUS) VALUE('*ACTIVE') /* Status + of the job */ CHGVAR VAR(&API_JBQUAL) VALUE(&API_JBNAM *CAT + &API_USER *CAT &API_JOBNR) /* qualified + job name */ CHGVAR VAR(%BIN(&API_ERROR)) VALUE(0) CALL PGM(QUSLJOB) PARM(&API_USQUAL 'JOBL0100' + &API_JBQUAL &API_STATUS &API_ERROR) /* Retrieve Header Description information */ CHGVAR VAR(%BIN(&STARTPOS)) VALUE(1) /* set start + position */ CHGVAR VAR(%BIN(&DATALEN)) VALUE(140) /* set data + length */ CALL PGM(QUSRTVUS) PARM(&API_USQUAL &STARTPOS + &DATALEN &HEADER) /* Retrieve data in list section */ CHGVAR VAR(&LST_OFFSET) VALUE(%BIN(&HEADER 125 4)) CHGVAR VAR(&LST_SIZE) VALUE(%BIN(&HEADER 129 4)) CHGVAR VAR(&LST_NBR) VALUE(%BIN(&HEADER 133 4)) CHGVAR VAR(&LST_LEN) VALUE(%BIN(&HEADER 137 4)) CHGVAR VAR(%BIN(&LST_POSBIN)) VALUE(&LST_OFFSET + 1) CHGVAR VAR(&LST_LENBIN) VALUE(%SST(&HEADER 137 4)) /* Retrieve List Data entries */ CHGVAR VAR(&LST_COUNT) VALUE(0) /* initialize + number of list entries counter */ LST_LOOP: IF COND(&LST_COUNT *EQ &LST_NBR) THEN(GOTO + CMDLBL(LST_END)) CALL PGM(QUSRTVUS) PARM(&API_USQUAL &LST_POSBIN + &LST_LENBIN &LST_DATA) CHGVAR VAR(&JOBNAME) VALUE(%SST(&LST_DATA 1 10)) CHGVAR VAR(&USER) VALUE(%SST(&LST_DATA 11 10)) CHGVAR VAR(&JOBNBR) VALUE(%SST(&LST_DATA 21 6)) CHGVAR VAR(&STATUS) VALUE(%SST(&LST_DATA 43 10)) CHGVAR VAR(&JOBTYPE) VALUE(%SST(&LST_DATA 53 1)) CHGVAR VAR(&SUBTYPE) VALUE(%SST(&LST_DATA 54 1)) /* Treatment of 1 list entry */ IF COND((&USER *EQ &CUR_USER) *AND (&STATUS *EQ + *ACTIVE *AND &JOBTYPE *EQ 'I')) THEN(DO) CHGVAR VAR(&TOTAL) VALUE(&TOTAL + 1) ENDDO /* End treatment of 1 list entry */ CHGVAR VAR(&LST_COUNT) VALUE(&LST_COUNT + 1) CHGVAR VAR(%BIN(&LST_POSBIN)) + VALUE(%BIN(&LST_POSBIN) + &LST_LEN) GOTO CMDLBL(LST_LOOP) LST_END: DLTUSRSPC USRSPC(&USP_LIB/&USP_NAME) /* Enter here the commands you want to execute when a user */ /* has already 5 active interactive sessions : */ IF COND(&TOTAL *GT 5) THEN(DO) SNDUSRMSG MSG('You are already 5 times active') + MSGTYPE(*INFO) /* PERFORM SIGNOFF */ SIGNOFF ENDDO END: ENDPGM Un saludo, Javier Mora Garc�a mailto:[EMAIL PROTECTED] Dialsur S.A. http://www.dialsur.es Departamento de Inform�tica > -----Mensaje original----- > De: Manolo Folch [SMTP:[EMAIL PROTECTED]] > Enviado el: mi�rcoles, 19 de febrero de 2003 16:54 > Para: [EMAIL PROTECTED] > Asunto: Sesiones Client Access. > > > Hola a todos. �Alguien sabe si se pueden limitar las sesiones de client > access en un equipo?. Tengo que estar controlando a los usuarios para que > no > se abran m�s de dos sesiones. Hay quien se abre tres y cuatro sesiones. > > Gracias. > > --------------------------------------------------------- > Manuel Folch > [EMAIL PROTECTED] > Permarin S.A. > Tel. 961 36 80 03 ext. 216 > > > _____________________________________________________ > Forum.HELP400 es un servicio m�s de NEWS/400. > � Publicaciones Help400, S.L. - Todos los derechos reservados > http://www.help400.es > _____________________________________________________ > > Para darte de baja, env�a el mensaje resultante de pulsar > mailto:[EMAIL PROTECTED]?body=LEAVE _____________________________________________________ Forum.HELP400 es un servicio m�s de NEWS/400. � Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________ Para darte de baja, env�a el mensaje resultante de pulsar mailto:[EMAIL PROTECTED]?body=LEAVE
