2010-07-01 12 views
6

¿Cómo podría crear un comando de AppleScript que cuando solo ejecuto el script (o hago doble clic en Finder?), ¿Ejecutaba un conjunto de comandos de terminal? El conjunto de comandos elimina completamente MySQL, y se ha convertido en un dolor escribirlos constantemente. Los comandos son:cómo crear la aplicación AppleScript para ejecutar un conjunto de comandos de terminal

sudo rm /usr/local/mysql 
sudo rm -rf /usr/local/mysql* 
sudo rm -rf /Library/StartupItems/MySQLCOM 
sudo rm -rf /Library/PreferencePanes/My* 
sudo rm -rf /Library/Receipts/mysql* 
sudo rm -rf /Library/Receipts/MySQL* 
sudo rm /etc/my.cnf 

También hay otro comando sudo nano /etc/hostconfig que se abre un archivo y lo necesitan para eliminar una línea del archivo, pero que parece que sería demasiado difícil de código, así que supongo que puede hazlo a mano. Pero sería una gran ayuda hacer esto automáticamente con un solo script.

¿Sería solo un montón de estos comandos?

do shell script (...) 

Gracias, Hristo

Respuesta

14

Sí, se usaría do shell script.

Sin embargo, para los comandos en los que ejecuta como superusuario (sudo), en su lugar, debe usar with administrator privileges. Así, por sudo rm /usr/local/mysql que haría:

do shell script "rm /usr/local/mysql" with administrator privileges 

Si su lista de comandos es largo, entonces puede que solo sea más fácil de poner todos los comandos en un solo archivo de secuencia de comandos shell, y luego ejecutar esa secuencia de comandos shell mediante do shell script :

do shell script "/path/to/shell/script" with administrator privileges 
+0

cuando lo haga 'do shell script "rm/usr/local/mysql" con privileges' administrador, me da un error y me dice que '/ usr/local/mysql' es un directorio. Eso es en realidad un enlace simbólico a un directorio diferente ... ¿cuál es el problema? – Hristo

+0

intente 'rm -rf/usr/local/mysql' – indragie

14

que en realidad no necesitan utilizar AppleScript para esto - sólo hay que poner todos los comandos de shell en un archivo de texto y darle un sufijo .command y asegurarse de que es ejecutable (por ejemplo chmod +x my_script.command) - esto hará que sea hacer doble clic en el Buscador.

+4

El sufijo' .command' no es suficiente; también debe incluir un shebang (es decir, agregue '#!/Bin/bash' como la primera línea de el archivo de texto) y agregue permiso de ejecución al archivo (es decir, ejecute 'chmod + x/path/to/file.command'). Por cierto, la gran ventaja de usar esto frente a un AppleScript es que se ejecuta en Terminal, por lo que puedes interactuar con el script (muy importante si quieres usar, por ejemplo, 'nano' para editar un archivo). –

+0

@Gordon: sí, buen punto, debería haber dicho que tiene que ser un script de shell ejecutable con una línea shebang. –

+1

tenga en cuenta, sin embargo, que al usar 'sudo' en un archivo .mand aún tendrá que ingresar su contraseña. si desea que el script se ejecute solo, este enlace tiene algunos buenos consejos sobre cómo hacerlo: http://askubuntu.com/questions/155791/how-do-i-sudo-a-command-in- a-script-without-being-asked-for-a-password – ericsoco

0

Me parece que los archivos .scpt funcionan mejor, pero esto es solo una cuestión de preferencia.

abierto "Script Editor" y añadir el siguiente comando:

sudo rm -rf /usr/local/mysql; sudo rm -rf /usr/local/mysql*; sudo rm -rf /Library/StartupItems/MySQLCOM; sudo rm -rf /Library/PreferencePanes/My*; sudo rm -rf /Library/Receipts/mysql*; sudo rm -rf /Library/Receipts/MySQL*; sudo rm /etc/my.cnf; say job completed successfully" with administrator privileges 
Cuestiones relacionadas