¿Cómo puedo ejecutar un conjunto de comandos de terminal con un solo clic?

4

Así que tengo este programa que uso para ver películas en mi Apple TV que se ejecuta desde mi Mac en la Terminal y va a la TV. Bueno, cuando quieras iniciar el servidor tienes que ejecutar un conjunto de comandos en la Terminal.

$ cd Desktop
$ cd PopcornTV
$ sudo npm install
$ sudo node atv.js

Estos comandos inician el servidor al que se conecta mi Apple TV. De todos modos, puedo hacer una aplicación de Automator o cualquier cosa de ese tipo que ejecute estos comandos cuando haga clic en un botón.

    
pregunta Ilya Vorobyev 06.09.2015 - 19:26

4 respuestas

3

Ejecutarlo en un script de Apple no es tan malo. solo tienes que ejecutar el script completo como root porque sudo requiere la interacción del usuario. Si haces un script de Apple como este:

do shell script "cd ~/Desktop/PopcornTV && /path/to/npm install && /path/to/node atv.js" with administrator privileges 

reemplace entonces /path/to/npm y /path/to/node con la salida de which npm y which node

abrirá un diálogo y le pedirá su contraseña.

    
respondido por el Schwertspize 06.09.2015 - 22:54
1

Una solución sin usar Automator:

1. Recopilando algunos detalles:

  • ¿Cuál es la ruta a npm ? Descúbrelo usando which npm en Terminal.app
  • ¿Cuál es la ruta a node ? Descúbrelo usando which node en Terminal.app
  • ¿Cuál es tu nombre de usuario? Encuentra usando whoami en Terminal.app

Todo esto es importante, toma nota de los resultados.

2. Configurando sudo

Ahora configuremos sudo para no requerir que uses una contraseña para esos dos comandos.

En Terminal.app, ingresa lo siguiente:

sudo visudo

Deberá ingresar su contraseña, aunque no verá ningún tipo de escritura a medida que la ingrese. Presione ingresar cuando haya terminado de ingresar su contraseña.

Esto abrirá el archivo /etc/sudoers para usted (probablemente en vi / vim) presione shift + g para ir al final del archivo, luego presione < kbd> o para insertar una nueva línea y comenzar a insertar texto, ingrese lo siguiente:

# Allow me to use npm and node without password
username ALL = NOPASSWD: /path/to/npm /path/to/node

Deberá reemplazar "nombre de usuario", "/ ruta / a / npm" y "/ ruta / a / nodo" con los detalles que recopiló en la sección 1 .

Cuando haya terminado de ingresar estos detalles, guarde y salga presionando esc luego ingresando :x luego presionando enter .

3. Envolviéndolo en un archivo

Creemos un archivo para poner esos comandos. En Terminal.app ingrese lo siguiente:

echo '#!/bin/bash
cd /Users/username/Desktop/PopcornTV
sudo /path/to/npm install
sudo /path/to/node atv.js' > ~/Desktop/startPopcornTV.command

chmod 740 ~/Desktop/startPopcornTV.command

Nuevamente, deberá reemplazar "nombre de usuario", "/ ruta / a / npm" y "/ ruta / a / nodo" con los detalles que recopiló en la sección 1 .

4. Corriendo

En su escritorio ahora tendrá un archivo llamado startPopcornTV.command (dependiendo de su configuración, podría llamarse startPopcornTV ).

Todo lo que necesitas hacer ahora es hacer doble clic en ese archivo y se iniciará PopcornTV por ti.

    
respondido por el forquare 07.09.2015 - 18:13
0

Creo que esto debería funcionar:

echo "#\n cd Desktop \n cd PopcornTV \n sudo npm install \n sudo node atv.js" >> ~/Desktop/startMyServer.command

luego haga que el archivo de comandos sea ejecutable

chmod +x ~/Desktop/startMyServer.command

luego encontrarás el archivo startMyServer.command en tu escritorio

    
respondido por el Hamza OBEIDAT 07.09.2015 - 12:06
0

Abre el Editor de Apple

agrega esto:

do shell script "cd ~/Desktop/PopcornTV && /usr/local/bin/npm install && /usr/local/bin/node atv.js" with administrator privileges

Guardar como una aplicación. Solo ábrelo cuando quieras correr.

    
respondido por el DisplayName 06.09.2015 - 20:00

Lea otras preguntas en las etiquetas