作者:E4b9a6, 创建:2024-10-08, 字数:7288, 已阅:155, 最后更新:2024-10-08
写了一个bash脚本实现下载指定版本的 Release 的所有结果
例如指定:https://github.com/fatedier/frp/releases/tag/v0.33.0
想保存到私有服务器上,但逐个逐个下载包非常麻烦,于是写了一个脚本来完成一次性下载
请先确保安装了 jq
用于 JSON 解析
sudo apt install jq
编辑 download_github_release.sh 如下:
#!/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 download_github_release.sh https://github.com/fatedier/frp/releases/tag/v0.33.0 /opt/docker/files/Public/Apps/frp_v33.0
参数解析:
执行如下
$ 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