Frage

Ich habe mein Bestes ausprobiert, um eine Lösung mit den vielen Drehbuchfragen zum Stack -Überlauf und im Internet herauszufinden, aber ich kann die Lösung, die ich brauche, nicht zu finden.

Ich möchte eine automatisiertere und weniger Klicklösung erstellen, um alle mobilen zwischengespeicherten Benutzerkonten auf einem System zu entfernen. Ich habe mich angemeldet und manuell auf Benutzerkonten gegangen und die Benutzer nacheinander entfernt, indem ich auf die Schaltfläche "-" klickte und dann auf "Sofort löschen" für die Benutzerdaten klicke. Das funktioniert, ist aber zeitaufwändig und ich habe bessere Dinge mit meiner Zeit zu tun. Ich wusste also, dass es einen Weg geben musste, dies mit einem Skript zu tun.

Ich bin auf diesen Code gestoßen:

for cuser in `dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do
    dscl . -delete /Users/$cuser
done

Wenn ich dies im Terminal betreibe, bekomme ich Berechtigungsfehler. Also dachte ich, ich müsste es mit sudo laufen. Deshalb habe ich angefangen, Apfelkripte zu erstellen, um das Skript auszuführen, aber ich kann nicht den richtigen Weg finden, es zu tun.

Irgendwelche Ideen? Übrigens, ich bin neu im Scripting auf dem Mac. Bitte kommentieren Sie Ihren Code, damit ich weiß, was passiert, und so führe ich nicht nur einen Skriptcode aus, ohne zu wissen, was er tun wird. :)

Vielen Dank

War es hilfreich?

Lösung

Um ein Shell -Skript mit durchzuführen mit sudo oder Administratorberechtigte anhängen with administrator privileges bis zum Ende deines do shell script Linie. Zum Beispiel:

do shell script "/path/to/script/file.sh" user name "adminusershortname" password "password" with administrator privileges

Sie können mehr über Apples Technote finden do shell script

Das heißt, dies als Shell -Skript zu speichern und das Shell -Skript mit Sudo auszuführen, würde genauso gut funktionieren.

#! /bin/sh

for cuser in `/usr/bin/dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do
    /usr/bin/dscl . -delete /Users/$cuser
done

Speichern Sie es als Sagen Sie removeUser.sh, verwenden Sie chmod Um es als ausführbar zu setzen (chmod 755) und dann laufen (sudo ./removeUser.sh)

Andere Tipps

Sie können dies tun, indem Sie die Sudoers -Datei Ihres Systems bearbeiten. Auf diese Weise können Sie das Konto, mit dem Sie dieses Skript (über Cron usw.) ausführen, die Möglichkeit ausführen, sudo ohne Passwort auszuführen.

Um die Sudoers -Datei zu bearbeiten, verwenden Sie Visudo, muss jedoch mit Administratorgenehmigung ausgeführt werden. Versuchen:

$ sudo visudo

Fügen Sie eine Zeile wie das Folgende am Ende der Datei hinzu und ersetzen Sie Nutzername Mit dem Benutzer, der Ihr Skript ausführt. Hinweis, verwenden Sie Registerkarten zwischen jedem Feld.

user_name    ALL=(ALL)     NOPASSWD:ALL

Jetzt sollte User_Name in der Lage sein, sudo einzugeben und nicht für ein Passwort aufgefordert wird.

Beachten Sie auch, dass Visudo ein Texteditor ist, der den VI -Editor widerspiegelt und dieselben Befehle wie VI verwendet.

Ich habe keinen Mac -Handy, also kann ich nicht überprüfen, ob dies funktionieren würde.

Versuchen Sie, Su - zu laufen

Dann Ihr Skript ausführen. Wenn das funktioniert, versuchen Sie Crontab -e

und Hinzufügen eines Eintrags, um Ihr Skript auszuführen.

Kennen Sie Crontab? Nun, wenn nicht googeln Sie es bei Bedarf. Aber im Grunde genommen, es jeden Tag um Mitternacht zu führen, hätten Sie ungefähr 0 * * * */path/to/script

Sehen: http://en.wikipedia.org/wiki/cron

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top