Come usare "sudo" in Applescript senza dover chiedere la password da terminale?

Mac OS X 10.4 (Tiger)

"sudo" non può più essere utilizzato come un equivalente di "with administrator privileges", quanto descritto sotto non funzionerà.
Inoltre uno script di bash o Perl eseguito con "with administrator privileges" in 10.4 crea problemi del tutto nuovi. In compenso una sequenza di comandi "do shell script" con l'opzione "with adminsitrator privileges" ora -analogamente al sudo- chiede la password una sola volta e la ricorda per i successivi 5 minuti.

Con Tiger, quindi, useremo una semplice sequenza di «do shell script "..." with adminsitrator privileges», dando la password una sola volta.


Mac OS X 10.2 (Jaguar) e 10.3 (Panther)

Con Applescript potrebbe dover essere necessario utilizzare più comandi da eseguire con privilegi amminsitrativi, e a questo scopo è prevista la sintassi:

do shell script "command" with administrator privileges

Sfortunatamente questa sintassi ri-chiede la password ogni volta che viene utilizzata, inoltre è possibile che alcuni comandi richiedano espressamente di essere utilizzati solo preceduti da "sudo".

Per risolvere entrambi i problemi si può utilizzare questo meccanismo:

on run
-- fake command issued in order to enable "sudo" commands
do shell script "ls" with administrator privileges

-- ora possiamo usare "sudo", come in questi esempi:
if (foo) then
do shell script "sudo command_1"
else
do shell script "sudo command_2"
end
do shell script "sudo command_3"
end

In questo modo la password richiesta per il primo comando viene registrata e considerata valida per i "sudo" successivi, almeno per alcuni minuti, e la password non viene più chiesta.

[ Home | Elenco delle FAQ | Risorse | Feed RSS ]