SU/SUDO





Devenir SuperUtilisateur



DSPF

     A                                      DSPSIZ(24 80 *DS3)
     A          R BIDON                     ASSUME
     A                                  1  2' '
     A          R FMT
     A                                      CA03(03) CA12(03)
     A                                      WINDOW(20 10 1 50 *NOMSGLIN)
     A                                  1  1'Mot'
     A                                  1  5'de'
     A                                  1  8'passe'
     A                                  1 14':'
     A            PWD           32   I  1 17DSPATR(ND) LOWER
  

 

SU


            CMD        PROMPT('Devenir SuperUtilisateur')

             PARM       KWD(USER) TYPE(*NAME) DFT(QSECOFR) +
                          PROMPT('Profil Utilisateur')


CPP de la cde SU


             PGM        PARM(&PRF)
             DCL        VAR(&PRF) TYPE(*CHAR) LEN(10)
             DCL        VAR(&CURCOD) TYPE(*CHAR) LEN(12)
             DCL        VAR(&PRFCOD) TYPE(*CHAR) LEN(12)
             DCL        VAR(&MDPL) TYPE(*INT) VALUE(32)
             DCL        VAR(&ERRCOD) TYPE(*CHAR) LEN(15) +
                          VALUE(X'00000000')
             DCL        VAR(&CCSID) TYPE(*INT) VALUE(-1)

             DCLF       FILE(SU_DSPF)  /* VARIABLES UTILISEES PAR LA GESTION DE MESSAGES */              DCL        &ERRORSW *LGL                     /* SWITCH  */              DCL        &MSGID *CHAR LEN(7)               /* ID MSG  */              DCL        &MSGDTA *CHAR LEN(100)            /* DATA    */              DCL        &MSGF *CHAR LEN(10)               /* FICHIER */              DCL        &MSGFLIB *CHAR LEN(10)            /* BIBLI   */  /* GESTION DES ERREURS                            */              MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
             SNDRCVF    RCDFMT(FMT)              IF &IN03 DO                SNDPGMMSG  MSG('Commande SU annulée') MSGTYPE(*COMP)
               RETURN              ENDDO
 /* VALIDATION DU  PROFIL ACTUEL */              CALL QSYGETPH  PARM('*CURRENT' ' ' &CURCOD)  /* VALIDATION DU  PROFIL DEMANDÉ */              CALL QSYGETPH  PARM(&PRF &PWD &PRFCOD &ERRCOD &MDPL &CCSID)
 /* CHANGEMENT DE PROFIL */              CALL QWTSETP  PARM(&PRFCOD)              CALL QUSCMDLN
 /* RETOUR AU PROFIL D'ORIGINE */              CALL QWTSETP  PARM(&CURCOD) /* ANNULATION DES VALIDATIONS DE PROFIL */              CALL QSYRLSPH  PARM(&PRFCOD)              CALL QSYRLSPH  PARM(&CURCOD)
             RETURN
              /*----------------------------------------*/  ERREUR:      /*        GESTION DES ERREURS             */
   /*----------------------------------------*/
                         IF         &ERRORSW SNDPGMMSG MSGID(CPF9999) +                           MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* 2EME FOIS*/                                                          /* ARRET PGM*/              CHGVAR     &ERRORSW '1' /* MISE EN PLACE DU SWTICH     */
 /* RENVOI DES MESSAGES DE TYPE *DIAG SI FIN ANORMALE */  DIAGMSG:    RCVMSG     MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +                           MSGF(&MSGF) MSGFLIB(&MSGFLIB)              IF         (&MSGID *EQ '       ') GOTO EXCPMSG              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                           MSGDTA(&MSGDTA) MSGTYPE(*DIAG)              GOTO       DIAGMSG /* BOUCLE SUR MESSAGES *DIAG      */
 /* RENVOI DU MESSAGE D'ERREUR                        */  EXCPMSG:    RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +                           MSGF(&MSGF) MSGFLIB(&MSGFLIB)              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                           MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)              ENDPGM

 

SUDO

Mais aussi sous RDI

             CMD        PROMPT('lancer une commande en QSECOFR')

             PARM       KWD(CMD) TYPE(*CMDSTR) MIN(1) +
                          PROMPT('Commande à lancer')
             PARM       KWD(USER) TYPE(*NAME) DFT(QSECOFR) +
                          PROMPT('Profil Utilisateur')
                          PARM       KWD(PASSWORD) TYPE(*CHAR) LEN(128) DFT(*PROMPT) +
                          SPCVAL((*PROMPT)) PASSVAL(*DFT) DSPINPUT(*NO) +
                          PROMPT('Mot de passe ou *PROMPT')

 


CPP de la cde SUDO


             PGM        PARM(&CMD &PRF &pwdparm))
             DCL        VAR(&CMD) TYPE(*CHAR) LEN(256)              DCL        VAR(&PRF) TYPE(*CHAR) LEN(10)              DCL        VAR(&pwdparm) TYPE(*CHAR) LEN(128)              DCL        VAR(&CURCOD) TYPE(*CHAR) LEN(12)              DCL        VAR(&PRFCOD) TYPE(*CHAR) LEN(12)              DCL        VAR(&MDPL) TYPE(*INT) VALUE(32)              DCL        VAR(&ERRCOD) TYPE(*CHAR) LEN(15) +                           VALUE(X'00000000')              DCL        VAR(&CCSID) TYPE(*INT) VALUE(-1)
             DCLF       FILE(SU_DSPF)  /* VARIABLES UTILISEES PAR LA GESTION DE MESSAGES */              DCL        &ERRORSW *LGL                     /* SWITCH  */              DCL        &MSGID *CHAR LEN(7)               /* ID MSG  */              DCL        &MSGDTA *CHAR LEN(100)            /* DATA    */              DCL        &MSGF *CHAR LEN(10)               /* FICHIER */              DCL        &MSGFLIB *CHAR LEN(10)            /* BIBLI   */  /* GESTION DES ERREURS                            */              MONMSG     MSGID(CPF0000) EXEC(GOTO ERREUR)
IF COND(&pwdparm = '*PROMPT') THEN(DO)
SNDRCVF RCDFMT(FMT)
IF &IN03 DO
SNDPGMMSG MSG('Commande SUDO annulée') MSGTYPE(*COMP)
RETURN
ENDDO
ENDDO
ELSE DO
chgvar &pwd &pwdparm
ENDDO              

 /* VALIDATION DU  PROFIL ACTUEL */              CALL QSYGETPH  PARM('*CURRENT' ' ' &CURCOD)  /* VALIDATION DU  PROFIL DEMANDÉ */              CALL QSYGETPH  PARM(&PRF &PWD &PRFCOD &ERRCOD &MDPL &CCSID)
 /* CHANGEMENT DE PROFIL */              CALL QWTSETP  PARM(&PRFCOD)              CALL QCMDEXC PARM(&CMD 256)
 /* RETOUR AU PROFIL D'ORIGINE */              CALL QWTSETP  PARM(&CURCOD) /* ANNULATION DES VALIDATIONS DE PROFIL */              CALL QSYRLSPH  PARM(&PRFCOD)              CALL QSYRLSPH  PARM(&CURCOD)
             RETURN
              /*----------------------------------------*/  ERREUR:      /*        GESTION DES ERREURS             */
   /*----------------------------------------*/
                         IF         &ERRORSW SNDPGMMSG MSGID(CPF9999) +                           MSGF(QCPFMSG) MSGTYPE(*ESCAPE) /* 2EME FOIS*/                                                          /* ARRET PGM*/              CHGVAR     &ERRORSW '1' /* MISE EN PLACE DU SWTICH     */
 /* RENVOI DES MESSAGES DE TYPE *DIAG SI FIN ANORMALE */  DIAGMSG:    RCVMSG     MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +                           MSGF(&MSGF) MSGFLIB(&MSGFLIB)              IF         (&MSGID *EQ '       ') GOTO EXCPMSG              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                           MSGDTA(&MSGDTA) MSGTYPE(*DIAG)              GOTO       DIAGMSG /* BOUCLE SUR MESSAGES *DIAG      */
 /* RENVOI DU MESSAGE D'ERREUR                        */  EXCPMSG:    RCVMSG     MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +                           MSGF(&MSGF) MSGFLIB(&MSGFLIB)              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +                           MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)              ENDPGM

 





©AF400