我正在尝试下载Github受保护仓库中项目的安装脚本。
下面的 user
和repo
将替换为正确的信息。
我试过卷曲:
curl -u gabipetrovay -L -o install.sh "https://raw.github.com/user/repo/master/admin/scripts/install.sh"
Curl提示输入密码,但是当我输入第一个字符时,它会更进一步下载(很多JS可能来自Github)
我也试过wget:
wget --user=gabipetrovay --ask-password "https://raw.github.com/user/repo/master/admin/scripts/install.sh"
使用wget我可以输入我的完整密码,但后来我收到503错误:
Resolving raw.github.com (raw.github.com)... 199.27.73.133
Connecting to raw.github.com (raw.github.com)|199.27.73.133|:443... connected.
HTTP request sent, awaiting response... 503 Connection timed out
2013-10-14 10:18:45 ERROR 503: Connection timed out.
如何获取install.sh文件? (我从Ubuntu服务器13.04运行它)
答案 0 :(得分:6)
Github的官方回应是:
感谢您的联系!在这种情况下,您需要使用我们的API下载单个文件:
http://developer.github.com/v3/repos/contents/#get-contents
使用此端点,您可以获得如下特定文件:
curl -u gabipetrovay -H "Accept: application/vnd.github.raw" "https://api.github.com/repos/user/repo/contents/filename"
在这种情况下,系统会提示您输入GitHub帐户密码,或者也可以使用OAuth令牌。作为参考,我们的API入门指南有一个很好的认证部分:
http://developer.github.com/guides/getting-started/#authentication
这就像一个魅力!
感谢Robert @ Github
答案 1 :(得分:2)
您可以使用V3 API获取这样的原始文件(您需要一个OAuth令牌):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path
所有这一切都必须在一条线上。 -O
选项将文件保存在当前目录中。您可以使用-o filename
指定不同的文件名。
要获取OAuth令牌,请按照此处的说明操作: https://help.github.com/articles/creating-an-access-token-for-command-line-use
如果您需要从shell脚本执行此操作,则可以实现更好的自动化。
我也把它写成了一个要点: https://gist.github.com/madrobby/9476733
答案 2 :(得分:0)
您需要按照其中的说明创建一个oauth令牌:Github basic authentication
然后你可以使用以下命令,curl获取一个临时url,所以你需要在curl中使用'-L'来跟随重定向:
curl -L -u <your token>:x-oauth-basic https://raw.github.com/user/repo/master/admin/scripts/install.sh
您也可以使用-o“filename”将其保存在磁盘上
答案 3 :(得分:0)
我正在使用带有 API 的 GitHub,因此只有一种解决方案适用于我的私有存储库:
https://api.github.com/repos/<owner>/<repo>/contents/<path/to/file>
在login:token
中发送CURLOPT_USERPWD
它返回数组,其中 download_url
具有所需的 url,其中包含令牌,该令牌是动态生成的,与您的访问令牌不同(因此这是解决问题的关键)。