menu E4b9a6's blog
rss_feed
E4b9a6's blog
有善始者实繁,能克终者盖寡。

curl下载github所有二进制包脚本

作者:E4b9a6, 创建:2024-10-08, 字数:7288, 已阅:54, 最后更新:2024-10-08

写了一个bash脚本实现下载指定版本的 Release 的所有结果

例如指定:https://github.com/fatedier/frp/releases/tag/v0.33.0

想保存到私有服务器上,但逐个逐个下载包非常麻烦,于是写了一个脚本来完成一次性下载

请先确保安装了 jq 用于 JSON 解析

Bash
sudo apt install jq

编辑 download_github_release.sh 如下:

Bash
#!/bin/bash

# 检查是否提供了 URL 参数
if [ "$#" -lt 1 ]; then
    echo "用法: $0 <release_url> [output_dir]"
    exit 1
fi

RELEASE_URL="$1"
OUTPUT_DIR="$2"

# 验证提供的 URL
if [[ ! "$RELEASE_URL" =~ ^https://github\.com/[^/]+/[^/]+/releases/tag/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
    echo "错误: 提供的 URL 不是有效的 GitHub 发布 URL。"
    exit 1
fi

# 提取仓库和标签信息
REPO=$(echo "$RELEASE_URL" | sed -E 's|https://github\.com/(.*)/releases/tag/(v.*)|\1|')
TAG=$(echo "$RELEASE_URL" | sed -E 's|https://github\.com/[^/]+/[^/]+/releases/tag/(v.*)|\1|')

# 获取发布信息
echo "正在获取发布信息: $RELEASE_URL..."
RELEASE_INFO=$(curl -s "https://api.github.com/repos/$REPO/releases/tags/$TAG")

# 检查发布是否存在
if [[ $(echo "$RELEASE_INFO" | jq -r '.message') == "Not Found" ]]; then
    echo "错误: 发布未找到。"
    exit 1
fi

# 如果指定了输出目录,则验证该路径是否存在
if [ -n "$OUTPUT_DIR" ]; then
    if [ ! -d "$OUTPUT_DIR" ]; then
        echo "错误: 指定的输出目录 $OUTPUT_DIR 不存在。"
        exit 1
    fi
else
    # 如果没有指定输出目录,则创建以仓库名称命名的目录
    OUTPUT_DIR=$(basename "$REPO")
    mkdir -p "$OUTPUT_DIR"
fi

# 提取资产下载 URL 和名称
ASSET_INFO=$(echo "$RELEASE_INFO" | jq -r '.assets[] | "\(.name) \(.url)"')

# 下载资产
echo "正在下载发布 $TAG 的资产..."
while read -r FILE_NAME URL; do
    echo "正在下载: $FILE_NAME"
    curl -L -H "Accept: application/octet-stream" -o "$OUTPUT_DIR/$FILE_NAME" "$URL"
done <<< "$ASSET_INFO"

echo "所有资产已成功下载到 $OUTPUT_DIR 目录。"

执行脚本:

Bash
bash download_github_release.sh https://github.com/fatedier/frp/releases/tag/v0.33.0 /opt/docker/files/Public/Apps/frp_v33.0

参数解析:

  • $1:github指定release的地址
  • $2:文件保存目录,为空则保存到当前目录下

执行如下

Bash
$ bash download_github_release.sh https://github.com/fatedier/frp/releases/tag/v0.33.0 /opt/docker/files/Public/Apps/frp_v33.0 
正在获取发布信息: https://github.com/fatedier/frp/releases/tag/v0.33.0...
正在下载发布 v0.33.0 的资产...
正在下载: frp_0.33.0_darwin_amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 9252k  100 9252k    0     0  3024k      0  0:00:03  0:00:03 --:--:-- 4971k
正在下载: frp_0.33.0_freebsd_386.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8410k  100 8410k    0     0  2641k      0  0:00:03  0:00:03 --:--:-- 4194k
正在下载: frp_0.33.0_freebsd_amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8831k  100 8831k    0     0  2796k      0  0:00:03  0:00:03 --:--:-- 3880k
正在下载: frp_0.33.0_linux_386.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8412k  100 8412k    0     0  2831k      0  0:00:02  0:00:02 --:--:-- 6698k
正在下载: frp_0.33.0_linux_amd64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8816k  100 8816k    0     0  2969k      0  0:00:02  0:00:02 --:--:-- 7670k
正在下载: frp_0.33.0_linux_arm.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8238k  100 8238k    0     0  2807k      0  0:00:02  0:00:02 --:--:-- 7125k
正在下载: frp_0.33.0_linux_arm64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8119k  100 8119k    0     0  2795k      0  0:00:02  0:00:02 --:--:-- 3928k
正在下载: frp_0.33.0_linux_mips.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8044k  100 8044k    0     0  2661k      0  0:00:03  0:00:03 --:--:-- 3721k
正在下载: frp_0.33.0_linux_mips64.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8007k  100 8007k    0     0  2404k      0  0:00:03  0:00:03 --:--:-- 3252k
正在下载: frp_0.33.0_linux_mips64le.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 7871k  100 7871k    0     0  2617k      0  0:00:03  0:00:03 --:--:-- 5414k
正在下载: frp_0.33.0_linux_mipsle.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 7956k  100 7956k    0     0  2654k      0  0:00:02  0:00:02 --:--:-- 5481k
正在下载: frp_0.33.0_windows_386.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to objects.githubusercontent.com:443 
正在下载: frp_0.33.0_windows_amd64.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8669k  100 8669k    0     0  2892k      0  0:00:02  0:00:02 --:--:-- 5846k
所有资产已成功下载到 /opt/docker/files/Public/Apps/frp_v33.0 目录。

$ tree /opt/docker/files/Public/Apps/frp_v33.0
/opt/docker/files/Public/Apps/frp_v33.0
├── frp_0.33.0_darwin_amd64.tar.gz
├── frp_0.33.0_freebsd_386.tar.gz
├── frp_0.33.0_freebsd_amd64.tar.gz
├── frp_0.33.0_linux_386.tar.gz
├── frp_0.33.0_linux_amd64.tar.gz
├── frp_0.33.0_linux_arm64.tar.gz
├── frp_0.33.0_linux_arm.tar.gz
├── frp_0.33.0_linux_mips64le.tar.gz
├── frp_0.33.0_linux_mips64.tar.gz
├── frp_0.33.0_linux_mipsle.tar.gz
├── frp_0.33.0_linux_mips.tar.gz
└── frp_0.33.0_windows_amd64.zip

1 directory, 12 files

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
gravatar
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]