Curl 如何仅从受Github保护的存储库中获取文件

Curl 如何仅从受Github保护的存储库中获取文件,curl,github,download,wget,Curl,Github,Download,Wget,我正在尝试下载Github保护的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 -

我正在尝试下载Github保护的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上运行此程序)

您需要创建一个oauth令牌,如下所述:

然后可以使用以下命令,curl获取一个临时url,因此需要在curl中使用'-L'来跟踪重定向:

curl -L -u <your token>:x-oauth-basic https://raw.github.com/user/repo/master/admin/scripts/install.sh
curl-L-u:x-oauth-basichttps://raw.github.com/user/repo/master/admin/scripts/install.sh

您还可以使用-o“filename”将其保存在磁盘上,Github的官方回复是:

谢谢联系!在这种情况下,您需要使用我们的API下载单个文件:

使用此端点,可以获得如下特定文件:

curl -u gabipetrovay -H "Accept: application/vnd.github.raw" "https://api.github.com/repos/user/repo/contents/filename"
在这种情况下,只会提示您输入GitHub帐户密码,或者您也可以使用OAuth令牌。作为参考,我们的API入门指南中有一个很好的关于身份验证的部分:

这就像一个符咒


谢谢Robert@Github

您可以使用V3API获得如下原始文件(您需要OAuth令牌):

curl-H'Authorization:tokeninsertaccesstokenhere'-H'Accept:application/vnd.github.v3.raw'-O-Lhttps://api.github.com/repos/owner/repo/contents/path

所有这些都必须在一条线上完成。
-O
选项将文件保存在当前目录中。您可以使用
-o filename
指定不同的文件名

要获取OAuth令牌,请按照以下说明操作:

如果您需要从shell脚本执行此操作,那么这可以实现更好的自动化

我也将此作为要点:

我正在使用GitHub和API,因此只有一种解决方案适用于我的私人回购:

https://api.github.com/repos///contents/

CURLOPT_USERPWD


它返回一个数组,其中
download\u url
具有所需的url,其中包含动态生成的令牌,该令牌不同于您的访问令牌(因此这是解决该问题的关键)。

我尝试过这个方法,但不起作用。如果要检索存储在特定标记(例如:my_unit_rest)中的文件,则可能会出现503错误(即使使用重定向),您可以按如下方式指定curl命令(如在bash脚本中):
USER=“me”;PASSWD=“mypasswd”;输出_FILEPATH=“/foo”;所有者=“mycompany”;REPOSITORY=“boo”;RESOURCE_PATH=“project-x/a/b/c.py”;TAG=“我的单元测试”;curl-u“$USER:$PASSWD“-H”Accept:application/vnd.github.v4.raw'-o$OUTPUT\u FILEPATH“-L”https://api.github.com/repos/$OWNER/$REPOSITORY/contents/$RESOURCE\u PATH?ref=$TAG“;