script example ejemplos linux bash curl

linux - ejemplos - bash script example



Ejecute el script bash desde la URL (12)

Supongamos que tengo un archivo en la URL "http://mywebsite.com/myscript.txt" que contiene un script:

#!/bin/bash echo "Hello, world!" read -p "What is your name? " name echo "Hello, ${name}!"

Y me gustaría ejecutar este script sin guardarlo primero en un archivo. ¿Cómo hago esto?

Ahora, he visto la sintaxis:

bash < <(curl -s http://mywebsite.com/myscript.txt)

Pero esto no parece funcionar como lo haría si guardara en un archivo y luego lo ejecutara. Por ejemplo readline no funciona, y la salida es justa:

$ bash < <(curl -s http://mywebsite.com/myscript.txt) Hello, world!

Del mismo modo, lo he intentado:

curl -s http://mywebsite.com/myscript.txt | bash -s --

Con los mismos resultados.

Originalmente tenía una solución como:

timestamp=`date +%Y%m%d%H%M%S` curl -s http://mywebsite.com/myscript.txt -o /tmp/.myscript.${timestamp}.tmp bash /tmp/.myscript.${timestamp}.tmp rm -f /tmp/.myscript.${timestamp}.tmp

Pero esto parece descuidado, y me gustaría una solución más elegante.

Soy consciente de los problemas de seguridad relacionados con la ejecución de un script de shell desde una URL, pero ignoremos todo eso por el momento.


A menudo uso lo siguiente es suficiente

curl -s http://mywebsite.com/myscript.txt | sh

Pero en un sistema antiguo (kernel2.4), encuentra problemas, y lo siguiente puede resolverlo, probé muchos otros, solo los siguientes trabajos

curl -s http://mywebsite.com/myscript.txt -o a.sh && sh a.sh && rm -f a.sh

Ejemplos

$ curl -s someurl | sh Starting to insert crontab sh: _name}.sh: command not found sh: line 208: syntax error near unexpected token `then'' sh: line 208: ` -eq 0 ]]; then'' $

El problema puede ser causado por la red lenta, o la versión bash demasiado vieja que no puede manejar la red lenta y elegantemente

Sin embargo, lo siguiente resuelve el problema

$ curl -s someurl -o a.sh && sh a.sh && rm -f a.sh Starting to insert crontab Insert crontab entry is ok. Insert crontab is done. okay $


De esta manera es bueno y convencional:

17:04:59@itqx|~ qx>source <(curl -Ls http://192.168.80.154/cent74/just4Test) Lord Jesus Loves YOU Remote script test... Param size: 4 --------- 17:19:31@node7|/var/www/html/cent74 arch>cat just4Test echo Remote script test... echo Param size: $#


Esta es la forma de ejecutar un script remoto con pasarle algunos argumentos (arg1 arg2):

curl -s http://server/path/script.sh | bash /dev/stdin arg1 arg2


La mejor manera de hacerlo es

curl http://domain/path/to/script.sh | bash -s arg1 arg2

que es un ligero cambio de respuesta por @ user77115


Para bash:

curl -s http://server/path/script.sh | bash -s arg1 arg2

Bourne Shell también admite "-s" para leer de stdin.


Prueba solo:

bash <(curl -s http://mywebsite.com/myscript.txt)


Simplemente combinando las respuestas de amra y user77115:

wget -qO- https://raw.githubusercontent.com/lingtalfi/TheScientist/master/_bb_autoload/bbstart.sh | bash -s -- -v -v

Ejecuta el script distante bbstart.sh pasando las opciones -v -v.


También puedes hacer esto:

wget -O - https://raw.github.com/luismartingil/commands/master/101_remote2local_wireshark.sh | bash


También:

curl -sL https://.... | sudo bash -


Usando wget , que generalmente es parte de la instalación predeterminada del sistema:

bash <(wget -qO- http://mywebsite.com/myscript.txt)


curl -s -L URL_TO_SCRIPT_HERE | intento

por ejemplo::

curl -s -L http://bitly/10hA8iC | bash


source <(curl -s http://mywebsite.com/myscript.txt)

debería hacerlo Alternativamente, deje la redirección inicial en el suyo, que está redirigiendo la entrada estándar; bash toma un nombre de archivo para ejecutar sin problemas, sin redireccionamiento, y la sintaxis <(command) proporciona una ruta.

bash <(curl -s http://mywebsite.com/myscript.txt)

Puede ser más claro si observa la salida de echo <(cat /dev/null)