IPB     Il futuro di Tevac dipende da te!  

Benvenuto Visitatore ( Log In | Registrati )

  · · · · · · · · · · · ·
Reply to this topicStart new topic
> [AS] lanciare shell script da AS con password di admin
Roberto Rota
messaggio 6 Nov 2005, 13:10
Messaggio #1


V-Strommer
Gruppo icone

Gruppo: Root Admin
Messaggi: 13.233
Iscritto il: 14-May 03
Da: Vignola (MO)
Utente Nr.: 2



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


--------------------
Mi ci è voluto un weekend in Liguria per scoprire ...

Supporta Tevac
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 6 Nov 2005, 13:23
Messaggio #2


Level 8/11
********

Gruppo: Team Moderatori
Messaggi: 3.785
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



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
Go to the top of the page
 
+Quote Post
chebfarid
messaggio 6 Nov 2005, 14:56
Messaggio #3


Level 8/11
********

Gruppo: Team Moderatori
Messaggi: 3.785
Iscritto il: 11-July 03
Da: Milano
Utente Nr.: 395



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
Go to the top of the page
 
+Quote Post
poweruser
messaggio 6 Nov 2005, 18:59
Messaggio #4


MacInATopic
Gruppo icone

Gruppo: Team Moderatori
Messaggi: 24.319
Iscritto il: 27-July 03
Da: Maglie (LE)
Utente Nr.: 440



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
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?
No, nego. Lo script viene sospeso in ogni caso fino alla conclusione del comando della shell.
> /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


--------------------
Paolo Portaluri

guru, n: A computer owner who can read the manual.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 

Collapse

> 

    Titolo discussione Risposte Autore discussione Visite Ultima azione
No New Posts   3 gerod 53 29 November 2008 - 03:52
Ultimo messaggio di: ugo
No New Posts   1 bisbetica 56 22 November 2008 - 16:49
Ultimo messaggio di: mauroga
No New Posts   8 pulce15 112 13 November 2008 - 16:32
Ultimo messaggio di: chebfarid
No New Posts   3 Cyrus 142 4 November 2008 - 10:09
Ultimo messaggio di: DaKaron
No new   16 alebopp 10.585 23 October 2008 - 18:12
Ultimo messaggio di: cesri
No New Posts   2 chicchino 116 11 October 2008 - 18:55
Ultimo messaggio di: chicchino
No New Posts   5 ryosaeb4 157 1 October 2008 - 23:47
Ultimo messaggio di: ryosaeb4
No New Posts   7 giacomino 147 20 September 2008 - 08:39
Ultimo messaggio di: wandal
No New Posts   0 Roberto Rota 153 17 September 2008 - 00:32
Ultimo messaggio di: Roberto Rota
No New Posts   7 RGS 114 31 August 2008 - 14:41
Ultimo messaggio di: Martini
No New Posts   1 fede86 162 27 August 2008 - 20:39
Ultimo messaggio di: poweruser
No new   23 cervello 480 22 August 2008 - 11:45
Ultimo messaggio di: cervello

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


RSS Versione Lo-Fi Oggi è il: 2 December 2008 - 18:53
IP.Board Skin Developed By Creative Networks