Quiero descargar un script de: http://dl.dropbox.com/u/11210438/flockonus-stack.sh y ejecutarlo. Supongo que, para usar wget, renombrarlo, modificarlo y ejecutarlo.
¿Cuáles son los comandos para hacer eso en Ubuntu?
Quiero descargar un script de: http://dl.dropbox.com/u/11210438/flockonus-stack.sh y ejecutarlo. Supongo que, para usar wget, renombrarlo, modificarlo y ejecutarlo.
¿Cuáles son los comandos para hacer eso en Ubuntu?
Respuestas:
Cuidadoso
Antes de ejecutar el script, ¿confía en la persona que lo escribió?
Por ejemplo, ¿esperaba que el script contuviera esto?
echo "brain1" > /etc/hostname
Eso intentará cambiar su nombre de host.
Para referencia futura, si después de verificar que el script es correcto y no malicioso, puede ejecutarlo en una línea como esta:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Pero descárguelo por separado y léalo antes de ejecutarlo por primera vez.
También tenga en cuenta que las indicaciones interactivas dentro del script descargado pueden no funcionar correctamente con este método.
apt-get install
lineas? Si apt-get
instalara alguna dependencia adicional, se lo preguntará, y si no puede, simplemente saldrá para estar seguro. Agregue todos los paquetes dependientes a los argumentos de la línea de comandos, o considere agregar -y
, por ejemploapt-get -y install...
Scripts no interactivos
wget -O - http://website.com/my-script.sh | bash
Tenga en cuenta que cuando utilice este método, los scripts interactivos no funcionarán.
Guiones interactivos
Para que los scripts interactivos funcionen, puede usar esto:
bash <(wget -qO- http://website.com/my-script.sh)
Scripts interactivos que deben ejecutarse como root
Advertencia: esto es extremadamente peligroso. No recomendado.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Tenga en cuenta que no puede usarlo simplemente, sudo bash
ya que usarlo <(...)
creará un archivo virtual y su descriptor de archivo no será accesible desde la instancia de root bash. Debe ejecutarse en el mismo usuario que necesita leer el archivo virtual, por lo que debe enviarse como su propio comando dentro del shell de usuarios raíz.
Ese script es mío, es seguro ... Me encantó la frase, pero tiene algunas líneas interactivas que no se ejecutaron ... no sé por qué.
Cuando se ejecuta dpkg, llamado por apt-get, vacía stdin. Si está utilizando un comando como curl blah | bash
, básicamente está enviando contenido de la página a bash a través de STDIN. Si uno de sus comandos es apt-get, luego se ejecuta, todo lo demás se eliminará.
El truco es usar un comando como este apt-get install --yes denyhosts </dev/null
. Esto le da a apt-get una entrada diferente, y simplemente vacía / dev / null en lugar del resto de su script.
Si desea ver un ejemplo completo de instalación de algo a través de un script remoto, puede consultar este script para configurar denyhosts
Para el registro, prefiero curl sobre wget para esto, pero wget también debería estar bien.
A todos estos ejemplos les falta un punto bastante importante. Si usa la URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, debe auditar el script cada vez que lo descargue, ya que puede ser modificado por cualquier persona en la ruta de red entre usted y Dropbox. Si cambia a http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh , no tendrá esa fuente de inseguridad.
(Dropbox intenta redirigir la URL http a https, pero en el caso de un ataque a la red, wget nunca podría hablar con el Dropbox real, y nunca vería la redirección)
Intente simplemente descargarlo como lo ha especificado con wget y luego ejecutarlo directamente. Puede ser elegante y usar variables para el script que desea descargar, etc., pero esto será suficiente.
Por ejemplo:
!#/bin/bash
#Change to temp directory
cd /tmp
#Download file using wget
wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh
#Execute the file
sh flockonus-stack.sh
echo "brain1" > /etc/hostname
podría ser tan fácilrm -rf /
.