Я хочу скачать скрипт из: http://dl.dropbox.com/u/11210438/flockonus-stack.sh и выполнить его. Я предполагаю, что использовать wget, переименовать его, изменить его и выполнить.
Какие команды для этого есть в Ubuntu?
Осторожный
Перед запуском сценария доверяете ли вы тому, кто его написал?
Например, вы ожидали, что сценарий будет содержать это?
echo "brain1" > /etc/hostname
Это попытается изменить ваше имя хоста.
Для справки в будущем, если после проверки правильности сценария и отсутствия вредоносного кода вы можете запустить его в одной строке следующим образом:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Но скачайте его отдельно и прочтите перед первым запуском.
Также обратите внимание, что интерактивные подсказки внутри загруженного скрипта могут работать некорректно при использовании этого метода.
Неинтерактивные сценарии
wget -O - http://website.com/my-script.sh | bash
Обратите внимание, что при использовании этого метода интерактивные сценарии работать не будут.
Интерактивные сценарии
Чтобы интерактивные скрипты работали, вы можете использовать это:
bash <(wget -qO- http://website.com/my-script.sh)
Интерактивные сценарии, которые необходимо запускать от имени пользователя root
Предупреждение: это чрезвычайно опасно. Не рекомендуется.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Обратите внимание, что вы не можете просто использовать sudo bash
с момента использования <(...)
создаст виртуальный файл, и его файловый дескриптор не будет доступен из корневого экземпляра bash. Он должен выполняться тем же пользователем, которому необходимо прочитать виртуальный файл, поэтому он должен быть отправлен как собственная команда внутри оболочки пользователя root.
Этот сценарий от меня, он безопасен .. Мне понравился однострочный, но в нем есть некоторые интерактивные строки, которые не запускались ... не знаю, почему?
Когда dpkg запускается, вызываемый apt-get, он сбрасывает стандартный ввод. Если вы используете такую команду, как curl blah | bash
, то вы в основном отправляете содержимое страницы в bash через STDIN. Если одна из ваших команд - apt-get, затем выполняется, все остальное будет сброшено.
Хитрость в том, чтобы использовать такую команду apt-get install --yes denyhosts </dev/null
. Это дает apt-get другой ввод, и он просто сбрасывает / dev / null вместо остальной части вашего скрипта.
Если вы хотите увидеть полный пример установки чего-либо через удаленный скрипт, вы можете посмотреть на этот скрипт для настройка denyhosts
Для справки, я предпочитаю curl, а не wget, но wget тоже подойдет.
#!/bin/sh
if [ ! -f "/tmp/flockonus-stack.sh" ]
then
wget -O /tmp/flockonus-stack.sh http://dl.dropbox.com/u/11210438/flockonus-stack.sh
fi
sh /tmp/flockonus-stack.sh
Во всех этих примерах отсутствует довольно важный момент. Если вы используете URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, вам необходимо проверять скрипт каждый раз, когда вы его загружаете, потому что он может быть изменен любым пользователем на сетевом пути между вами и Dropbox. Если вы переключитесь на https: //dl.dropbox.com/u/11210438/flockonus-stack.sh, у вас не будет этого источника незащищенности.
(Dropbox пытается перенаправить URL-адрес http на https, но в случае сетевой атаки wget никогда не сможет связаться с настоящим Dropbox и никогда не увидит перенаправление)
Попробуйте просто загрузить его, как вы указали с помощью wget, а затем запустить его напрямую. Вы можете пофантазировать и использовать переменные для скрипта, который хотите загрузить, и т. Д., Но это поможет.
Например:
!#/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