Как выполнить скрипт Bash из Github?

Скажите, что у меня есть следующий файл my_cool_file.sh в репозитории Git в Github (или BitBucket в этом отношении) с именем my_cool_repo. Файл представляет собой сценарий, используемый для установки хорошо известного программного обеспечения ConfigServer CSF-LFD:

#!/bin/bash
cd /usr/src
rm -fv csf.tgz
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
sed -i "s/TESTING = "1"/TESTING = "0"/g" /etc/csf/csf.conf
csf -r
perl /usr/local/csf/bin/csftest.pl
# sh /etc/csf/uninstall.sh

Как можно выполнить этот сценарий Bash (файл .sh) непосредственно из Github через командную строку?

5
задан 21 January 2018 в 19:29

3 ответа

Загрузите файл (убедитесь, что вы используете необработанный файл, в противном случае вы загрузите страницу HTML!) С wget, используя его точный URL, а затем перенаправите вывод в bash:

Вот пример с пояснениями:

wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | bash

Из справочной страницы для команды wget :

   -O file
   --output-document=file
       The documents will not be written to the appropriate files, but all
       will be concatenated together and written to file.  If - is used as
       file, documents will be printed to standard output, disabling link
       conversion.  (Use ./- to print to a file literally named -.)

       Use of -O is not intended to mean simply "use the name file instead
       of the one in the URL;" rather, it is analogous to shell
       redirection: wget -O file http://foo is intended to work like wget
       -O - http://foo > file; file will be truncated immediately, and all
       downloaded content will be written there.

Таким образом, вывод на - будет на самом деле записываете содержимое файлов в STDOUT, а затем вы просто перенаправляете его в bash или в любую оболочку, которую предпочитаете. Если вашему скрипту нужны права sudo, вам нужно сделать sudo bash в конце, чтобы строка выглядела следующим образом:

wget -O - https://raw.githubusercontent.com/<username>/<project>/<branch>/<path>/<file> | sudo bash
12
ответ дан 21 January 2018 в 19:29

Если в вашем скрипте есть такие записи, как read user_input , попробуйте следующее:

bash <(curl -s https://raw.githubusercontent.com/username/project/branch/path /file.sh)

Параметр -s не показывает прогресс загрузки.

3
ответ дан 22 January 2020 в 02:35

Вы можете использовать следующую команду для передачи параметров

bash -s

Нашел здесь: передача параметров в bash при выполнении сценария, полученного curl

0
ответ дан 9 May 2020 в 15:03

Другие вопросы по тегам:

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