2 votos

Ejecutar un montón de comandos en el Terminal

Ejecuto los siguientes comandos para logkext mucho en mi terminal y me gustaría saber una forma de automatizar todo el proceso.

  1. Terminal abierto
  2. escriba "sudo logKextClient"
  3. Escriba la contraseña de administrador
  4. logKextClient tiene su propia contraseña que tengo que escribir ahora
  5. logKextClient se está ejecutando ahora. prompt es logKextClient >
  6. Tengo que escribir un comando aquí. "abrir"
  7. Entonces tengo que cerrar una ventana que se abre. La ventana se titula out_logFile.txt. Normalmente se abre en TextEdit. No me importa forzar su cierre. Como una copia del archivo se guarda en el escritorio.

Me gustaría poder hacer doble clic en algo y ejecutar la lista de comandos/acciones anterior sin problemas.

Muchas gracias por sus sugerencias.

1voto

tanveer malik Puntos 1

Pasé exactamente por el mismo proceso cuando estaba jugando con logKext. El comando unix que puede querer explorar es /usr/bin/expect.

Puede volverse complejo rápidamente, pero básicamente lo que hace es actuar como un mediador entre usted y los programas que está ejecutando para que pueda proporcionar respuestas que normalmente tendría que escribir. Como ejemplo, construí este script para poder automatizar el proceso de imprimir la salida de logKext. Deberías reconocer todos los comandos que normalmente escribirías tú mismo en logkextClient...

#!/usr/bin/expect -f
spawn logkextClient
expect "logKext Password:"
send "mylogkextpassword\r"
expect "logKextClient > "
send "print\r"
expect "logKextClient > "
send "quit\r"
close

En 10.5 y 10.6 esto funcionaba bien para mí para la salida de la impresión de logKext para que pudiera canalizarlo en un correo electrónico y enviarlo. Sin embargo, yo estaba ejecutando esta sesión como Root a la terminal, por lo que era simple.

Teóricamente Si no estás conectado como Root, podrías decir

#!/usr/bin/expect -f
spawn sudo -k logkextClient
expect "Password:"
send “myrootpassword\r”
expect "logKext Password:"
send "mylogkextpassword\r"
expect "logKextClient > "
send "print\r"
expect "logKextClient > "
send "quit\r"
close

(nótese que he utilizado sudo -k intencionadamente para ser coherente y exigir una contraseña cada vez)

Así que podrías usar tu editor de línea de comandos favorito para crear este script, hacer un chmod +x y arrastrarlo al muelle para lanzarlo... Teóricamente.

Pero he estado teniendo problemas en Mavericks para conseguir que /usr/bin/expect se comporte correctamente con sudo, así que esto no me está funcionando en otros scripts como debería. Y de todas formas ya no tengo logKext instalado para hacer pruebas.

Pero creo que esta es la dirección que debes tomar.

Buena suerte.

0voto

Transplanted Puntos 11

Puede utilizar Automator para hacerlo. Las instrucciones son para Mavericks, pero la parte principal es la misma en todos los SO.

  1. Abrir Automator
  2. Haga clic en "Nuevo documento".
  3. Seleccione "Flujo de trabajo".
  4. Haga clic en "Grabar" (es posible que le pida permiso, haga clic en "Abrir preferencias del sistema")
  5. Realiza todas las acciones que quieras que haga
  6. Haga clic en el botón de parada
  7. Guardar el flujo de trabajo

Ahora, cuando quieras que realice esas acciones, simplemente abre el flujo de trabajo.

0voto

Michael Kropat Puntos 3993

Sugiero usar AppleScript. No puedo proporcionar el código real, sólo una idea.

a) Terminal de lanzamiento: http://smallbusiness.chron.com/use-applescript-launch-programs-48829.html

b) Indicando al Terminal que ejecute el comando: https://stackoverflow.com/questions/1870270/sending-commands-and-strings-to-terminal-app-with-applescript

c) Dar al Terminal privilegios de superusuario: https://discussions.apple.com/message/23354237#23354237

No estoy seguro de que (b) y (c) puedan combinarse perfectamente.

d) Cierre la ventana de edición de texto/documento: https://stackoverflow.com/questions/10933711/how-to-open-close-and-close-the-dialogs-of-another-application-using-cocoa-or-a

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X