Automic Workload Automation

Expand all | Collapse all

Recevoir une notification quand le mot de passe d'un utilisateur expire

  • 1.  Recevoir une notification quand le mot de passe d'un utilisateur expire

    Posted Dec 29, 2017 05:35 AM
      |   view attached
    Nous avons récemment reçus cette question au Support:
    Est-il possible de configurer un notification à une équipe en particulier quand le mot de passe d'un utilisateur est sur le point d'expirer ? Avez-vous un mécanisme de notification qui permettrait d'alerte le manager du service de l'utilisateur ?
    A ma connaissance, il n'existe pas de fonction intégrée qui pourrait faire cela (si quelqu'un lit se post et connait la réponse, n'hésitez pas à me corriger). Voici une tentative de contournement, basée sur le post de Christine_Chavez_6412 et traduite depuis celui d'Antoine_Sauteron.

    ATTENTION: soyez vigilants et testez cette solution avant de l'utiliser dans un environnement de production. N'oublie pas non plus que cette solution est une tentative de contournement et ne peut être considérée comme une solution définitive.

    VARA.SQLI

    Vous devez d'abord enregistrer la requête SQL suivante dans un objet VARA.SQLI, qui va vous permettre de lancer des requêtes sur la base de donnée interne de l'Automation Engine. Cette requête va lister les utilisateurs dont le mot de passe n'a pas été modifié dans les 30 derniers jours:

    MS SQL:
    SELECT Usergroup.OH_Name "Usergoup", UserID.OH_Name "User", UserID.OH_Client, USR_FIRSTNAME, USR_LASTNAME, USR_PWCHANGE
    FROM OH Usergroup, OH UserID, USR, USRG
    WHERE USRG_USR_Idnr=UserID.OH_Idnr
    AND USRG_USG_Idnr=Usergroup.OH_Idnr
    AND UserID.OH_Idnr=USRG_USR_Idnr
    AND UserID.OH_Idnr=USR_OH_Idnr
    AND UserID.OH_Deleteflag='0'
    AND USR_PWCHANGE < getdate() - 30
    ORDER BY 1, 2, 3
    Oracle:
    SELECT Usergroup.OH_Name "Usergoup", UserID.OH_Name "User", UserID.OH_Client, USR_FIRSTNAME, USR_LASTNAME, USR_PWCHANGE
    FROM OH Usergroup, OH UserID, USR, USRG
    WHERE USRG_USR_Idnr=UserID.OH_Idnr
    AND USRG_USG_Idnr=Usergroup.OH_Idnr
    AND UserID.OH_Idnr=USRG_USR_Idnr
    AND UserID.OH_Idnr=USR_OH_Idnr
    AND UserID.OH_Deleteflag='0'
    AND USR_PWCHANGE < sysdate - 30
    ORDER BY 1, 2, 3
     Notes:
    • Il n'y a pas ';' à la fin de votre requête, cela retourne une erreur SQL quand il est utilisé dans un objet VARA.SQL
    • Les utilisateurs qui n'appartiennent pas à un Usergroup ne seront pas listé dans cette requête.

    NOTIFICATION

    Maintenant, il faut créer un objet Notification et le modifier de telle manière:

    Onglet Notification
    • Modifiez le(s) destinataire(s): qui dois recevoir la notification ? Y a-t-il des restrictions de calendrier ?
    • Modifiez le sujet: dans l'exemple suivant, ce sera "List of Users" suivi de la date du jour.

    2i9xnpcgfsfi.pnghttps://us.v-cdn.net/5019921/uploads/editor/v5/2i9xnpcgfsfi.png" width="1106">

    Vous pouvez modifier le HTML suivant, en utilisant du CSS, pour le corps du message:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <style type="text/css">
    table, th, td
    {
        border: 1px solid black;
        border-collapse: collapse;
        border-spacing: 5px; 
    }
    td, th {
        border: 1px solid #dddddd;
        text-align: left;
        padding: 8px;
    }
    </style>
    <title>Users</title>
    </head>
    <body>
    <strong>These users will have to change their password :</strong>
    <br><br>
    <table>
    <tr>
    <th>UserGroup</th><th>User</th><th>Client #</th><th>FirstName</th><th>SecondName</th><th>LastPasswordChange</th>
    </tr>

    Onglet Process
    Utilisez ce script pour récupérer les résultats de votre VARA.SQLI et créer une table HTML avec son contenu:
    : SET &HND# = PREP_PROCESS_VAR(VARA.SQLI.USER.INFO)
    : PROCESS &HND#
    :   SET &USRG# = GET_PROCESS_LINE(&HND#,2)
    :   SET &USR# = GET_PROCESS_LINE(&HND#,3)
    :   SET &CLNT# = GET_PROCESS_LINE(&HND#,4)
    :   SET &USR_FIRSTNAME# = GET_PROCESS_LINE(&HND#,5)
    :   SET &USR_LASTNAME# = GET_PROCESS_LINE(&HND#,6)
    :   SET &USR_PW_CHNG# = GET_PROCESS_LINE(&HND#,7)
    :   SET &TABLEROW# = '<tr><td>&USRG#</td><td>&USR#</td><td>&CLNT#</td><td>&USR_FIRSTNAME#</td><td>&USR_LASTNAME#</td><td>&USR_PW_CHNG#</td></tr>'
    :   PUT_ATT_APPEND CALL_TEXT ='&TABLEROW#'
    : ENDPROCESS

    :PUT_ATT_APPEND CALL_TEXT = "</table></body></html>"

    En lançant l'objet Notification, vous obtiendrez alors quelque chose de ce genre:

    fnwoyhdjedc5.pnghttps://us.v-cdn.net/5019921/uploads/editor/5m/fnwoyhdjedc5.png" width="826">

    Vous pouvez maintenant modifier la notification pour qu'elle s’exécute de manière régulière, via un troisième objet tel qu'un JSCH, par exemple.

    Vous trouverez en pièce jointe de ce post un export XML de l'objet utilisé comme exemple.

    Attachment(s)

    xml
    users.xml   5 KB 1 version


  • 2.  Recevoir une notification quand le mot de passe d'un utilisateur expire

    Posted Feb 23, 2018 10:18 AM
    Super Post !

    Merci Julia, très utile pour envoyer des rapports simples quand on ne connaît pas la longueur du tableau !

    Petit conseil cependant qui m'a évité de nombreux problèmes concernant le PROCESS / ENDPROCESS.

    Il est fortement conseillé de faire un CLOSE_PROCESS &HND# après le ENDPROCESS
    Cela permettra de libérer la mémoire sur les processus, et également de s'affranchir de problèmes si l'on exécute plusieurs PROCESS portants le même nom au même moment sur un Système.