Wget скрипт и запустить его
Я хочу скачать скрипт с: http://dl.dropbox.com/u/11210438/flockonus-stack.sh и выполнить его. Я думаю, использовать wget, переименовать его, chmod и выполнить.
Каковы команды для этого в Ubuntu?
6 ответов
Осторожный
Перед запуском сценария доверяете ли вы тому, кто его написал?
Например, вы ожидали, что скрипт будет содержать это?
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
с помощью <(...)
создаст виртуальный файл, и его файловый дескриптор не будет доступен из экземпляра root bash. Он должен выполняться тем же пользователем, который должен прочитать виртуальный файл, поэтому его следует отправлять как его собственную команду внутри оболочки корневых пользователей.
Этот сценарий от меня, он безопасен. Мне понравился однострочный текст, но у него есть некоторые интерактивные строки, которые не запускались... Не знаю, почему?
Когда dpkg запускается, вызывается apt-get, он сбрасывает stdin. Если вы используете команду вроде curl blah | bash
, тогда вы в основном отправляете содержимое страницы в bash через STDIN. Если одна из ваших команд - apt-get, то выполняется, все остальное будет сброшено.
Хитрость заключается в том, чтобы использовать такую команду apt-get install --yes denyhosts </dev/null
, Это дает apt-get другой ввод и просто сбрасывает /dev/null вместо остальной части вашего скрипта.
Если вы хотите увидеть полный пример установки чего-либо с помощью удаленного скрипта, вы можете посмотреть на этот скрипт для настройки denyhosts.
Для записи, я предпочитаю curl, а не wget, но с wget тоже все должно быть в порядке.
Во всех этих примерах отсутствует достаточно важный момент. Если вы используете URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
вам необходимо проверять скрипт каждый раз, когда вы его загружаете, потому что он может быть изменен любым пользователем в сетевом пути между вами и dropbox. Если вы переключитесь на http: //dl.dropbox.com/u/11210438/flockonus-stack.sh, у вас не будет этого источника небезопасности.
(Dropbox пытается перенаправить URL-адрес http на https, но в случае сетевой атаки wget никогда не получит доступ к реальному dropbox и никогда не увидит перенаправление)
#!/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
Попробуйте просто загрузить его, как вы указали с помощью 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