[AS] Script modifiant les accès d'un utilisateur

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Yves PETRONIN
Date:  
À: La liste AppleScript Francophone
Sujet: [AS] Script modifiant les accès d'un utilisateur
Si cela peut être utile.....


--SCRIPT

(***********************************************************************
**************************)
(* Script d'interdiction/autorisation d'accès d'un utilisateur.
*Version: 0.9.0
* Compatibilité: Mac OS X. 10.4 Versions plus récentes non testées.
Privilèges d'administrateur requis
*
* Auteur: Y Petronin
*
* Fichier:
* Fichiers/Dossiers annexes:
* Libs: non
* Osaxen: non
* Outils Unix: oui
* Apps:
*
* Description:
*
* * Utilisation: ...Lancer le script... *
* Historique: *
* 0.9.0
* 2010-01-19 Version alpha *
**)

(* Product properties *)

property pMyName : "Script limitation accès ordinateur" (* default
name *)
property version : "0.9.0"


--User properties

property pUserName : missing value
property pauthorized : missing value
property prestricted : missing value


on init()
    set pUserName to SelectUser()
    set pauthorized to ";ShadowHash;"
    set prestricted to ";DisabledUser;"
end init



on run
    main()
end run



on GetLoginStatus(pUserName)
    try
        set readLoginstatus to "dscl . -read /users/" & pUserName & " " &  
"AuthenticationAuthority" & " " & " | tail -1 | awk  '{print ($2)'}"
        set loginStatus to do shell script readLoginstatus
        return loginStatus as string
    on error
        return ""
    end try
end GetLoginStatus




on main()
    try
        init()
        LockUnlockUser()
    end try
end main



on LockUnlockUser()
    if GetLoginStatus(pUserName) is pauthorized then
        set dlg to "L 'utilisateur" & " " & pUserName & " est actuellement  
autorisé. Voulez vous modifier ses droits d'accès ?"
        dlgUser(dlg)
        set DesactiveUser to "sudo dscl . -change /users/" & pUserName & "  
" & "AuthenticationAuthority" & " " & "\"" & pauthorized & "\" " &  
"\"" & prestricted & "\""
        try
            do shell script DesactiveUser with administrator privileges
            if GetLoginStatus(pUserName) is prestricted then
                set dlg to "L 'utilisateur" & " " & pUserName & " a été bloqué !"
                dlgUser(dlg)
            else
                set dlg to "Opération non effectuée ! Un problème est apparu !"
                dlgUser(dlg)
            end if
        end try
    else

        
        set dlg to "L 'utilisateur" & " " & pUserName & " est actuellement  
bloqué. Voulez vous modifier ses droit d'accès ?"
        dlgUser(dlg)
        set ActiveUser to "sudo dscl . -change /users/" & pUserName & " " &  
"AuthenticationAuthority" & " " & "\"" & prestricted & "\"" & " " &  
"\"" & pauthorized & "\""
        try
            do shell script ActiveUser with administrator privileges
            if GetLoginStatus(pUserName) is pauthorized then
                set dlg to "L 'utilisateur" & " " & pUserName & " est à nouveau  
autorisé !"
                dlgUser(dlg)
            else
                set dlg to "Opération non effectuée ! Un problème est apparu !"
                dlgUser(dlg)
            end if
        end try
    end if

    
end LockUnlockUser



on dlgUser(G)
    activate
    set bs to {"ANNULER", "OK"}
    display dialog G buttons bs default button 2 with icon 1 giving up  
after 8
    set {b, u} to {button returned, gave up} of result
    if u then set b to bs's item 1
    if b is bs's item 1 then error number -128 (* ¡localization! *)
end dlgUser




on SelectUser()
    try
        set l to ListUsers() as list
        set dlg to choose from list l with prompt "Veuillez entrer le nom  
de l'utilisateur dont l'accès est à modifier:" cancel button name  
"ANNULER" OK button name "OK" without multiple selections allowed and  
empty selection allowed
        if the result is false then
            error number -128
        else
            return result as text
        end if
    end try
end SelectUser



on ListUsers()
    try
        tell application "System Events" to set NameCurrentUser to (name of  
(current user)) as string
        set cmd to "ls /Users/"
        set a to do shell script cmd
        set Long_List to words of a as list
        set Short_List to {}
        repeat with x in Long_List
            if contents of x is not in {NameCurrentUser, "Shared"} then set  
end of Short_List to contents of x
        end repeat
        return Short_List
    end try
end ListUsers


--SCRIPT
_______________________________________________
Applescript_fr mailing list
Applescript_fr@???
http://listes.patpro.net/mailman/listinfo/applescript_fr