download ubuntu images and keep them current
This commit is contained in:
1 parent
f7865f05a1
commit
2e273985b7
1 file changed
+69
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DOWNLOAD_DIR="/data/ubuntu"
|
||||
mkdir -p "$DOWNLOAD_DIR"
|
||||
|
||||
ARCH="amd64"
|
||||
|
||||
# Supported:
|
||||
# 24.04 desktop
|
||||
# 24.04 server
|
||||
# 26.04 desktop
|
||||
# 26.04 server
|
||||
|
||||
declare -A URLS=(
|
||||
["24-desktop"]="https://releases.ubuntu.com/24.04/"
|
||||
["24-server"]="https://releases.ubuntu.com/24.04/"
|
||||
["26-desktop"]="https://releases.ubuntu.com/resolute/"
|
||||
["26-server"]="https://releases.ubuntu.com/resolute/"
|
||||
)
|
||||
|
||||
download_if_newer() {
|
||||
local key="$1"
|
||||
local base_url="${URLS[$key]}"
|
||||
|
||||
echo "Checking $key..."
|
||||
|
||||
iso_name=$(curl -fsSL "$base_url" \
|
||||
| grep -oE 'ubuntu-[0-9.]+(-live-server|-desktop)-amd64\.iso' \
|
||||
| sort -Vu \
|
||||
| tail -1)
|
||||
|
||||
if [[ -z "$iso_name" ]]; then
|
||||
echo "Could not determine latest ISO for $key"
|
||||
return 1
|
||||
fi
|
||||
|
||||
latest_version=$(echo "$iso_name" | grep -oE '[0-9]+(\.[0-9]+)+')
|
||||
|
||||
local_iso=$(find "$DOWNLOAD_DIR" -name "*$(basename "$iso_name" | sed 's/[0-9.]\+//')*" 2>/dev/null | sort | tail -1 || true)
|
||||
|
||||
if [[ -n "$local_iso" ]]; then
|
||||
local_version=$(basename "$local_iso" | grep -oE '[0-9]+(\.[0-9]+)+' | head -1)
|
||||
|
||||
if [[ "$local_version" == "$latest_version" ]]; then
|
||||
echo "Already up to date: $iso_name"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Outdated local ISO found:"
|
||||
echo " Local : $local_version"
|
||||
echo " Latest: $latest_version"
|
||||
fi
|
||||
|
||||
echo "Downloading $iso_name..."
|
||||
wget --limit-rate=4M -c -P "$DOWNLOAD_DIR" "${base_url}${iso_name}"
|
||||
|
||||
echo "Done."
|
||||
echo
|
||||
}
|
||||
|
||||
download_if_newer "24-desktop"
|
||||
download_if_newer "24-server"
|
||||
download_if_newer "26-desktop"
|
||||
download_if_newer "26-server"
|
||||
|
||||
echo "Finished."
|
||||
|
||||
Reference in new issue
Block a user