Я хочу скачать скрипт с: http://dl.dropbox.com/u/11210438/flockonus-stack.sh и выполнить его. Я думаю, использовать wget, переименовать его, chmod и выполнить.
Каковы команды для этого в Ubuntu?
Я хочу скачать скрипт с: http://dl.dropbox.com/u/11210438/flockonus-stack.sh и выполнить его. Я думаю, использовать wget, переименовать его, chmod и выполнить.
Каковы команды для этого в Ubuntu?
Ответы:
Осторожный
Перед запуском сценария доверяете ли вы тому, кто его написал?
Например, вы ожидали, что скрипт будет содержать это?
echo "brain1" > /etc/hostname
Это попытается изменить ваше имя хоста.
Для дальнейшего использования, если после проверки, что скрипт корректен и не является вредоносным, вы можете запустить его в одну строку следующим образом:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Но загрузите его отдельно и прочитайте перед первым запуском.
Также обратите внимание, что интерактивные подсказки внутри загруженного скрипта могут работать неправильно при использовании этого метода.
apt-get install
линии? Если apt-get
бы установить какие-либо дополнительные зависимости, он спросит вас, и если он не может, он просто выйдет, чтобы быть в безопасности. Либо добавьте все зависимые пакеты к аргументам командной строки, либо рассмотрите возможность добавления -y
, напримерapt-get -y install...
Неинтерактивные скрипты
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 s : //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
echo "brain1" > /etc/hostname
может быть так же легкоrm -rf /
.