Domanda

Ho fatto del mio meglio per trovare una soluzione con le tante domande di script su Stack Overflow e internet, ma io non riesco a trovare la soluzione che ho bisogno.

Quello che voglio fare è creare una soluzione più automatizzata e meno clic per rimuovere tutti gli account utente mobile nella cache su un sistema. Sono stato il login e manualmente andare agli account utente e rimuovendo gli utenti uno alla volta facendo clic sul pulsante "-", quindi clic su "Elimina immediatamente" per i dati utente. Questo funziona, ma è in termini di tempo e non ho di meglio da fare con il mio tempo. Quindi sapevo che ci doveva essere un modo per farlo con uno script.

Mi sono imbattuto in questo codice:

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

Se corro questo terminale ricevo errori di autorizzazione. Così ho pensato che ho bisogno di eseguirlo con sudo. Così ho iniziato a cercare nella creazione di AppleScript per eseguire lo script, ma non riesco a trovare il modo giusto per farlo.

Tutte le idee? A proposito, io sono nuovo per lo scripting su Mac, quindi si prega di commentare il codice in modo che so che cosa sta accadendo, e quindi non solo eseguire del codice script senza sapere cosa si farà. :)

Grazie

È stato utile?

Soluzione

Per eseguire uno script di shell con sudo o di amministratore privilegi accodare with administrator privileges alla fine della vostra linea do shell script. Ad esempio:

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

È possibile trovare maggiori sulla nota tecnica di Apple che fare con do shell script

Detto questo, salvando questo come uno script di shell e l'esecuzione dello script di shell usando sudo avrebbe funzionato altrettanto bene.

#! /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

Salva come dire removeUser.sh, utilizzare chmod per impostarlo come eseguibile (chmod 755) e quindi eseguirlo (sudo ./removeUser.sh)

Altri suggerimenti

È possibile farlo modificando il file sudoers del sistema. Ciò consentirà l'account utilizzato per eseguire questo script (via cron, etc.) la possibilità di eseguire sudo senza password.

Per modificare il file sudoers si utilizza visudo, ma deve essere eseguito con il permesso di amministrazione. Prova:

$ sudo visudo

Aggiungere una riga come la seguente alla fine del file, sostituendo nome_utente con l'utente che verrà eseguito lo script. Nota, utilizzare le schede tra ogni campo.

user_name    ALL=(ALL)     NOPASSWD:ALL

Ora nome_utente dovrebbe essere in grado di digitare sudo e non verrà richiesta una password.

Si noti inoltre che visudo è un editor di testo che rispecchia l'editor vi e usa gli stessi comandi VI.

Non ho un mac a portata di mano in modo da non posso verificare se questo dovrebbe funzionare.

Provare a eseguire su -

Poi l'esecuzione dello script. Se funziona, provare crontab -e

e l'aggiunta di una voce per eseguire lo script del tuo.

Sei familiarità con crontab? bene se non google se necessario. Ma in fondo per eseguirlo ogni giorno a mezzanotte avresti qualcosa di simile 0 * * * * / path / to / script

Si veda: http://en.wikipedia.org/wiki/Cron

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top