Posso creare un'applicazione di Automator per avviare Tomcat quando è necessario?

4

Posso avviare Apache Tomcat (installato tramite HomeBrew) nel terminale usando

$ catalina run

Ma non funziona in uno script Shell dell'applicazione Automator utilizzando bash

Ho provato a configurare uno script di bash Shell in Automator come questo:

catalina run

Quando eseguo l'applicazione Automator, non funzionerà e mostra -: catalina: command not found .

Qual è il modo corretto di creare un'applicazione di Automator o devo usare AppleScript?

    
posta jackxujh 28.11.2017 - 08:55
fonte

2 risposte

2

Per rispondere effettivamente alle domande che hai chiesto:

  • Posso creare un'applicazione di Automator per avviare e arrestare Tomcat quando è necessario?

    Si

  • Qual è il modo corretto per farlo, o ho bisogno di AppleScript o cose del genere?

  • E 'possibile avviare e arrestare sia in un'unica app di Automator?
  • Qual è il modo corretto di creare un'applicazione di Automator o devo usare AppleScript?

Dal momento che di solito c'è più di un modo per realizzare qualcosa, ti consigliamo di non usare "... il modo corretto per ..." e mostrarti alcune scelte.

Se vuoi semplicemente essere in grado di attivare lo stato di Apache Tomcat , ad esempio start o stop it, quindi la seguente riga di comando può essere utilizzata in un Automator Flusso di lavoro dell'applicazione utilizzando un Esegui script shell azione :

  • In Automator , crea un nuovo Flusso di lavoro dell'applicazione .
  • Aggiungi un Esegui script di shell azione .
    • Impostazioni : Shell: / bin / bash e Passa l'input: allo stdin

Sostituisci il codice predefinito con la seguente riga di codice :

[[ $(/bin/ps aux | /usr/bin/grep [t]omcat) == "" ]] && /usr/local/bin/catalina start || /usr/local/bin/catalina stop
  • Salva il Automator Flusso di lavoro dell'applicazione .

Questo comando controlla per vedere se Apache Tomcat è in esecuzione e se non , quindi inizia , e se si , allora si ferma . Semplicemente attiva / disattiva lo stato di Apache Tomcat . È una soluzione senza fronzoli.

Una soluzione più solida sarebbe utilizzare invece Esegui AppleScript azione .

  • In Automator , crea un nuovo Flusso di lavoro dell'applicazione .
  • Aggiungi un Esegui AppleScript azione .

Utilizza il seguente esempio codice AppleScript al posto del codice predefinito :

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
  • Salva il Automator Flusso di lavoro dell'applicazione .

Questo potrebbe anche essere usato in un'applicazione AppleScript , creata in Script Editor , da sola senza bisogno di Automator . In entrambi i casi durante l'esecuzione verrà presentata una o l'altra finestra di dialogo .

Questo ti dà l'opportunità di vedere se è in esecuzione e annulla se preferisci.

Nota: ad eccezione dell'utilizzo di un'istruzione try e di on error number 1 istruzione non vi sono altri errori gestione presentata nel esempio codice AppleScript . Per ulteriori gestione degli errori che possono essere appropriati / necessari / richiesti, l'onere dell'utente è di aggiungere ulteriore gestione degli errori appropriata per qualsiasi codice di esempio presentato.

Inoltre, il codice di esempio qui presentato è stato testato con un'installazione pulita di macOS 10.12.6 con Command Line Tools (macOS Sierra versione 10.12) per Xcode-9.1, Homebrew, JDK 9.0.1, e apache-tomcat-8.5.23.tar.gz installato. Non vedo alcun motivo per cui questo non funzionerebbe anche con macOS 10.13.

    
risposta data 30.11.2017 - 03:41
fonte
3

Quando si esegue un comando o uno script della shell in Automator, viene passato il PERCORSO predefinito del sistema, non quello nel proprio profilo bash. Ecco perché bash non riesce a trovare il comando catalina .

Devi sempre specificare il percorso completo del comando negli script della shell. Se è stato installato tramite HomeBrew, questo è probabilmente /usr/local/bin/catalina , ma puoi confermarlo eseguendo which catalina in una sessione terminale.

    
risposta data 29.11.2017 - 23:50
fonte

Leggi altre domande sui tag