¿Puedo crear una aplicación Automator para iniciar Tomcat cuando lo necesite?

4

Puedo iniciar Apache Tomcat (instalado a través de HomeBrew) en la Terminal usando

$ catalina run

Pero no funciona en una secuencia de comandos de Shell de la aplicación Automator usando bash

Intenté configurar una secuencia de comandos bash Shell en Automator como esta:

catalina run

Cuando ejecuto la aplicación Automator, no funciona y muestra -: catalina: command not found .

¿Cuál es la forma correcta de crear una aplicación de Automator o necesito usar AppleScript?

    
pregunta jackxujh 28.11.2017 - 08:55

2 respuestas

2

Para responder realmente a las preguntas que le haga:

  • ¿Puedo crear una aplicación Automator para iniciar y detener Tomcat cuando lo necesite?

  • ¿Cuál es la forma correcta de hacer esto, o necesito AppleScript o esas cosas?

  • ¿Y es posible iniciar y detener una aplicación Automator?
  • ¿Cuál es la forma correcta de crear una aplicación Automator, o necesito usar AppleScript?

Ya que generalmente hay más de una forma de lograr algo, abstengamos de usar "... la forma correcta de ..." y le mostramos algunas opciones.

Si simplemente quiere poder cambiar el estado de Apache Tomcat , es decir, iniciar o detener entonces, la siguiente línea de comando se puede usar en un Automator flujo de trabajo de la aplicación utilizando una secuencia de comandos de shell acción :

  • En Automator , crea un nuevo flujo de trabajo de la aplicación .
  • Agregue una Ejecución del script de shell acción .
    • Configuración : Shell: / bin / bash y Ingreso de pase: a stdin

Reemplace el código predeterminado con la siguiente línea de código :

[[ $(/bin/ps aux | /usr/bin/grep [t]omcat) == "" ]] && /usr/local/bin/catalina start || /usr/local/bin/catalina stop
  • Guarde el Automator flujo de trabajo de la aplicación .

Este comando comprueba para ver si Apache Tomcat se está ejecutando y si no , entonces se inicia , y si , lo detiene . Simplemente cambia el estado de Apache Tomcat . Es una solución sencilla.

Una solución más robusta sería utilizar una acción Ejecutar AppleScript

.
  • En Automator , crea un nuevo flujo de trabajo de la aplicación .
  • Agregue una acción Ejecutar AppleScript .

Utilice el siguiente ejemplo AppleScript código en lugar del código predeterminado :

try
    set isRunning to (do shell script "/bin/ps aux | /usr/bin/grep [t]omcat")
on error number 1
    set isRunning to missing value
end try

if isRunning contains missing value then
    display dialog "                Click the Start button to start Apache Tomcat." buttons {"Cancel", "Start"} ¬
        default button 2 with title "Start Apache Tomcat"
    do shell script "/usr/local/bin/catalina start"
else
    display dialog "                Click the Stop button to stop Apache Tomcat." buttons {"Cancel", "Stop"} ¬
        default button 2 with title "Stop Apache Tomcat"
    do shell script "/usr/local/bin/catalina stop"
end if
  • Guarde el Automator flujo de trabajo de la aplicación .

Esto también se puede utilizar en una AppleScript , creada en Script Editor , por sí sola, sin necesidad de Automator . En cualquier caso, cuando se ejecute se le presentarán uno u otro cuadros de diálogo .

Esto te da la oportunidad de ver si está o no corriendo y cancelar si quieres en su lugar.

Nota: Con la excepción de usar una declaración try y una declaración on error number 1 no hay otro error manejo presentado en el ejemplo AppleScript código . Para el manejo de errores adicional que pueda ser apropiado / necesario / deseado, el usuario tiene la responsabilidad de agregar el manejo de errores apropiado para cualquier código de ejemplo presentado.

También, el código de ejemplo presentado aquí se probó bajo una instalación limpia de macOS 10.12.6 con Command Line Tools (macOS Sierra versión 10.12) para Xcode-9.1, Homebrew, JDK 9.0.1, y apache-tomcat-8.5.23.tar.gz instalado. No veo ninguna razón por la que esto no funcione también en macOS 10.13.

    
respondido por el user3439894 30.11.2017 - 03:41
3

Cuando ejecuta un comando de shell o un script en Automator, se pasa la ruta de acceso predeterminada de su sistema, no la de su perfil de bash. Es por eso que bash no puede encontrar el comando catalina .

Siempre debe especificar la ruta completa del comando en los scripts de shell. Si se instaló a través de HomeBrew, probablemente sea /usr/local/bin/catalina , pero puede confirmarlo ejecutando which catalina en una sesión de terminal.

    
respondido por el Tony Williams 29.11.2017 - 23:50

Lea otras preguntas en las etiquetas