Benvenuto Visitatore ( Log In | Registrati )
![]() ![]() |
6 Nov 2005, 13:10
Messaggio
#1
|
|
|
Vorrei far fare da AppleScript delle operazioni che richiedono il lancio di uno shell script che, a sua volta, richiede la password di root, e che se la password è sbagliata si fermi in qualche modo.
Esempio con gli script di mantenimento disistema: CITAZIONE display dialog 1
[b]set [b]try      do shell script [b]on      display dialog [b]end Pero' succede che se io inserisco una password sbagliata interviene il sistema, chiedendomi la password utente, e se la metto corretta questo prosegue con lo script, mentre io vorrei che immettendo una password sbagliata lo script si interrompesse. Qualche idea? tnx rob -------------------- |
|
|
|
|
|
|
|
6 Nov 2005, 13:23
Messaggio
#2
|
|
|
Questa parte del tuo codice
CITAZIONE on error messaggioDiErrore number numeroErrore
display dialog messaggioDiErrore & " " & numeroErrore viene eseguito? Se è così basta aggiungere una riga con la sola parola CODICE return che interromperà lo script.
Se invece appare subito la "correzione" da parte del sistema forse è perché il codice del terminale non aspetta il resto dello script e va per la sua propria strada. Mi sembra di ricordare che aggiungendo questo strano codice CODICE > /dev/null 2>&1 & allo shell script questo passerà in background e permette ad AppleScript di continuare con il proprio flusso di lavoro. Qualche esperto di Unix conferma?
Buon scripting Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
6 Nov 2005, 14:56
Messaggio
#3
|
|
|
Seconda ipotesi: rivedendo il tuo comando
CODICE do shell script "/etc/daily" password passwordina with administrator privileges mi viene in mente che molto probabilemnte l'intero argomento di do shell script deve essere rinchiuso da virgolette (aggiungendo degli escape per le virgolette contenute nella stringe stessa): CODICE do shell script ""/etc/daily" password passwordina with administrator privileges"
Altrimenti viene interpretato prima la parte "/etc/daily" che non contiene nessuna informazione sulla password e chiama quindi in aiuto il sistema per chiedertela. Potresti anche tagliare la testa al toro e controllare la password root all'interno dello script, prima di passarla allo shell script, ma forse non è il massimo dal punto di vista della sicurezza. Buon scripting Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
6 Nov 2005, 18:59
Messaggio
#4
|
|
|
Riporto dalla famosa TN2065:
CITAZIONE(TN2065) Q: How do I get administrator privileges for a command?
A: Use the administrator privileges and password parameters like this: CODICE do shell script "command" password "mypassword" with administrator privileges
If you omit the password parameter, do shell script will ask for a password when it runs. Bear in mind that administrator privileges allow you to change any file anywhere in the system. You can render your system unbootable or even erase the entire disk with a few well-placed commands, so exercise caution. Better yet, don't use administrator privileges unless you absolutely have to. Unless you are doing system-level development, you should never need to change anything in /System, changing /Library should suffice. Because of a bug, administrator privileges does not work correctly with multiple commands. You must turn your command into a single invocation of sh, like this: CODICE set normal_command to "command1; command2" do shell script "sh -c " & quoted form of normal_command with administrator privileges In pratica se vuoi che lo script chieda la password, non devi usare il parametro password. Se si sbaglia ad inserire la password per tre volte consecutive, il comando do shell script si blocca e da l'errore Nome utente amministratore o password non corretti.. Io ho provato a lanciare il comando come utente non amministratore, e la finestra di richiesta della password appare comunque anche se essa è specificata con l'apposito parametro (e mi sembra giusto visto che non saprebbe per quale utente usarla). Non ho provato con un utente amministratore. CITAZIONE(chebfarid) Mi sembra di ricordare che aggiungendo questo strano codice No, nego. Lo script viene sospeso in ogni caso fino alla conclusione del comando della shell.
CODICE 2>&1 & allo shell script questo passerà in background e permette ad AppleScript di continuare con il proprio flusso di lavoro. Qualche esperto di Unix conferma?> /dev/null invia lo standard output del comando in un buco nero. In pratica non mostra i risultati del comando. 2>&1 duplica lo standard error nello standard output. La & finale nel terminale dice alla shell di eseguire il comando in background. CITAZIONE(chebfarid) mi viene in mente che molto probabilemnte l'intero argomento di do shell script deve essere rinchiuso da virgolette (aggiungendo degli escape per le virgolette contenute nella stringe stessa) Assolutamente no. Il comando va scritto esattamente come lo si scriverebbe nel terminale. Al massimo vanno quotate le eventuali virgolette per non interferire con AppleScript.
Ciao Paolo -------------------- |
|
|
|
|
![]() ![]() |
| Titolo discussione | Risposte | Autore discussione | Visite | Ultima azione | |||
|---|---|---|---|---|---|---|---|
![]() |
3 | gerod | 53 | 29 November 2008 - 03:52 Ultimo messaggio di: ugo |
|||
![]() |
1 | bisbetica | 56 | 22 November 2008 - 16:49 Ultimo messaggio di: mauroga |
|||
![]() |
8 | pulce15 | 112 | 13 November 2008 - 16:32 Ultimo messaggio di: chebfarid |
|||
![]() |
3 | Cyrus | 142 | 4 November 2008 - 10:09 Ultimo messaggio di: DaKaron |
|||
![]() |
16 | alebopp | 10.585 | 23 October 2008 - 18:12 Ultimo messaggio di: cesri |
|||
![]() |
2 | chicchino | 116 | 11 October 2008 - 18:55 Ultimo messaggio di: chicchino |
|||
![]() |
5 | ryosaeb4 | 157 | 1 October 2008 - 23:47 Ultimo messaggio di: ryosaeb4 |
|||
![]() |
7 | giacomino | 147 | 20 September 2008 - 08:39 Ultimo messaggio di: wandal |
|||
![]() |
0 | Roberto Rota | 153 | 17 September 2008 - 00:32 Ultimo messaggio di: Roberto Rota |
|||
![]() |
7 | RGS | 114 | 31 August 2008 - 14:41 Ultimo messaggio di: Martini |
|||
![]() |
1 | fede86 | 162 | 27 August 2008 - 20:39 Ultimo messaggio di: poweruser |
|||
![]() |
23 | cervello | 480 | 22 August 2008 - 11:45 Ultimo messaggio di: cervello |
|||
|
Versione Lo-Fi | Oggi è il: 2 December 2008 - 18:53 |
| IP.Board Skin Developed By Creative Networks | ||