Я хочу завантажити скрипт з: 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
оскільки використання <(...)
створить віртуальний файл, і його дескриптор файлу не буде доступний з екземпляра bash root. Він повинен бути виконаний на тому самому користувачеві, якому потрібно прочитати віртуальний файл, тому його треба надіслати як власну команду всередині оболонки кореневих користувачів.
Цей сценарій від мене, це безпечно. Полюбив однолінійку, але в ньому є кілька інтерактивних ліній, які не виконувались. Не знаю чому?
Коли dpkg працює, викликаний apt-get, він змиває stdin. Якщо ви використовуєте команду типуcurl blah | bash
правило, ви надсилаєте вміст сторінки в bash через STDIN. Якщо одна з ваших команд apt-get, то запускається, все інше буде розмито.
Хитрість полягає у використанні такої команди apt-get install --yes denyhosts </dev/null
. Це дає apt-get інший вклад, і він просто змиває / dev / null замість решти сценарію.
Якщо ви хочете побачити повний приклад встановлення чогось за допомогою віддаленого сценарію, ви можете переглянути цей сценарій налаштування відхилень
Для запису я вважаю за краще закручувати wget для цього, але wget також повинен бути добре.
У всіх цих прикладах відсутній досить важливий момент. Якщо ви використовуєте URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, вам потрібно перевіряти скрипт щоразу, коли ви завантажуєте його, оскільки його може змінювати будь-хто на мережевому шляху між вами та папкою. Якщо перейти на http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh , це джерело невпевненості у вас не буде.
(Dropbox намагається перенаправити URL-адресу http на https, але у випадку мережевої атаки wget ніколи не стане спілкуватися зі справжнім Drobox і ніколи не побачить переспрямування)
Спробуйте просто завантажити його, як ви вказали за допомогою 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 /
.