web-dev-qa-db-ja.com

GithubからBashスクリプトを実行する方法は?

これは、my_cool_file.shという名前のGithub(またはBitBucket)のGitリポジトリに次のファイル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
Arcticooling

正確なURLを使用してwgetでファイルをロードし(未加工ファイルを使用することを確認してください。そうでない場合はHTMLページをロードしてください!)、出力を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
Videonauth