Willkommen auf der Blog-Seite von hubionmac.com!
Alles rund um AppleScript und was mich sonst noch so interessiert ;-)!

Es ging um eine Frage in einem Forum, wie man am besten via Skript das Benutzerkennwort ändern kann. Da in OSX damit auch gleichzeitig der Schlüsselbund bei Anmeldung entschlüsselt wird, muss das Kennwort hierfür auch gleich mit geändert werden... das machte die Sache etwas komplizierter, aber eigentlich doch nicht.
Das Skript habe unter 10.12.1 getestet... sollte aber auch auf früheren Versionen funktionieren

##erst mal alle lokalen Nutzer abfragen... wenn es nur einen gibt, direkt weiter
tell application "Finder" to set localUsers to name of every folder of (path to "usrs") whose name is not "Shared"
if (count of localUsers) > 1 then
    set localUser to choose from list localUsers with prompt "Welcher Nutzer soll bearbeitet werden?"
    if localUser is false then
        ##Script abbrechen, wenn auf Abruch gedrückt wurde... also choose list false zurück gibt
        error number -128
    end if
else
    set localUser to localUsers as string
end if
##Alte und neue Kennworte erfragen
set olderpassword to ""
repeat until olderpassword ≠ ""
    set olderpassword to text returned of (display dialog "Bitte alte Kennwort für User \"" & localUser & "\" eingeben" default answer "" with hidden answer)
end repeat
set newpassword to ""
repeat until newpassword ≠ ""
    set newpassword to text returned of (display dialog "Bitte neues Kennwort für User \"" & localUser & "\" eingeben" default answer "" with hidden answer)
end repeat

##Benutzerkennwort ändern.... es muss mit administrator privileges (Abfrage eines Admin Kennwortes) laufen, da sonst ein prompt in der Shell kommen würde....
## Soweit zumindest mein Kenntnisstand vielleicht gibt es aber auch eine schönere Lösung ohne Admin rechte ;-)
try
    do shell script "dscl . -passwd /Users/" & localUser & " " & quoted form of newpassword with administrator privileges
    display notification "System-Kennwort erfolgreich geändert"
on error msg
    display notification "Fehler beim Ändern des Systemkennworts: " & msg as string
    error number -128
end try
##Schlüsselbund Kennwort ändern
try
    do shell script "security set-keychain-password -o " & quoted form of olderpassword & " -p" & quoted form of newpassword with administrator privileges
    display notification "Schlüsselbundkennwort erfolgreich geändert"
on error msg
    display notification "Fehler beim Ändern des Schlüsselbundkennwortes: " & msg as string
    error number -128
end try

Continue reading...