Запустите сценарий и запустите его

Я хочу загрузить скрипт из http: //dl.dropbox. com /u /11210438 /flockonus-stack.sh и выполнить его. Я предполагаю, что использовать wget переименовать его, chmod его и выполнить.

Каковы команды для этого в Ubuntu?

22 голоса | спросил Fabiano Soriani 25 Jam1000000amTue, 25 Jan 2011 00:57:41 +030011 2011, 00:57:41

6 ответов


40

Тщательное

Перед запуском скрипта доверяете ли вы тому, кто его написал?

Например, вы ожидали, что скрипт будет содержать это?

echo "brain1" > /etc/hostname

Это попытается изменить ваше имя хоста.


Для справки в будущем, если после проверки подлинности правильный и не злонамеренный, вы можете запустить его в одной строке следующим образом:

wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash

Но загрузите его отдельно и прочитайте его перед запуском в первый раз.

Также обратите внимание, что интерактивные подсказки внутри загруженного скрипта могут работать неправильно, используя этот метод.

ответил Mikel 25 Jam1000000amTue, 25 Jan 2011 01:03:55 +030011 2011, 01:03:55
5
  

Этот скрипт от меня, это безопасно. Любимый однострочный, но у него есть некоторые интерактивные строки, которые не запускались. Не знаю почему?

Когда dpkg запускается, вызывается apt-get, он сбрасывает stdin. Если вы используете команду типа curl blah | bash, вы в основном отправляете содержимое страницы в bash через STDIN. Если одна из ваших команд apt-get, затем запускается, все остальное будет очищено.

Трюк заключается в использовании команды, подобной этой apt-get install --yes denyhosts </dev/null. Это дает apt-get другой вход, и он просто сбрасывает /dev /null, а не остальную часть вашего скрипта.

Если вы хотите увидеть полный пример установки чего-либо с помощью удаленного сценария, вы можете посмотреть этот скрипт для настройка denyhosts

Для записи, я предпочитаю закручивать wget для этого, но wget также должен быть в порядке.

ответил Zoredache 25 Jam1000000amTue, 25 Jan 2011 02:28:29 +030011 2011, 02:28:29
4
#!/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
ответил lynxman 25 Jam1000000amTue, 25 Jan 2011 00:59:46 +030011 2011, 00:59:46
4

Во всех этих примерах отсутствует достаточно важный момент. Если вы используете 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 и никогда не увидит перенаправление)

ответил pde 5 Mayam16 2016, 02:44:55
2

Попробуйте просто загрузить его, как вы указали с помощью 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
ответил Brett 25 Jam1000000amTue, 25 Jan 2011 01:06:24 +030011 2011, 01:06:24
1

Неинтерактивные скрипты

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 bash. Он должен быть выполнен тем же пользователем, который должен прочитать виртуальный файл, поэтому он должен быть отправлен как собственная команда внутри оболочки root.

ответил Nathan Fiscaletti 3 Jam1000000amWed, 03 Jan 2018 01:17:10 +030018 2018, 01:17:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132