[AppleScript] Password ändern öffnen

chris_92

Erdapfel
Registriert
18.01.16
Beiträge
3
Hallo Zusammen,

ich versuche ein Script zu schreiben, dass den Punkt "Passwort ändern ..." unter den Systemeinstellungen öffnet.

Aktuell habe ich es schon mal geschafft, in den Bereich im Menü zukommen, aber wie schaffe ich es jetzt, dass er den Punkt "Passwort ändern" anklickt und öffnet?

Aktuell sieht das Script so aus:

Code:
tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preferences.users"
    reveal anchor "passwordPref" of pane id "com.apple.preferences.users"
    tell application "System Events"
        tell process "System Preferences"
       
        end tell
    end tell
end tell

Ich hoffe Ihr könnt mir da helfen...

Besten Dank
Christian
 

hubionmac

Tydemans Early Worcester
Registriert
25.06.04
Beiträge
393
Servus Chris,

also bevor Du mit so etwas wie GUI-Scripting oder ähnlichem anfängst, würde ich ehr nach einem Weg suchen, das ganze mit ein paar Terminal-Befehlen zu lösen.
Das ist zuverlässiger und sollte im Ideal-Fall auch noch nach ein paar Software-Updates funktionieren, auch wenn sich das GUI selbst verändert.

Also was Du beim Ändern des Kennwortes änderst, ist neben dem Benutzerkennwort auch das Kennwort vom Schlüsselbund und das macht die Sache nur etwas komplizierter, aber auch hier wusste Google Rat.


Ich gehe mal davon aus der Benutzer auf dem Mac heisst chris
Also Schritt 1 das Benutzerkennwort ändern
Code:
dscl . -passwd /Users/chris neuesKennwort
Damit es kein Prompt gibt, welches nach dem alten Kennwort fragt, einfach als Root ausführen....

Schritt 2 das Schlüsselbund-Kennwort ändern:
Code:
security set-keychain-password -o altesKennwort -p neuesKennwort


Und hier das fertige AppleScript:
Code:
##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

Links zur Recherche:
1. http://hubionmac.com/wordpress/2012/09/02/pfadangabe-in-applescript/
2. https://discussions.apple.com/thread/7334618?start=0&tstart=0
3. http://krypted.com/mac-security/mac-os-x-changing-passwords-from-the-command-line/