Files
story/deploy/server/install-ossutil.sh
T

37 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
if [[ ${EUID:-$(id -u)} -ne 0 ]]; then
echo "Run this installer as root" >&2
exit 2
fi
version=2.3.0
archive=ossutil-${version}-linux-amd64.zip
expected_sha256=3ae4d9fc85a7a6e9f5654d1599766f1a3a42a3692870887b5ae9338d582ef65a
download_url="https://gosspublic.alicdn.com/ossutil/v2/${version}/${archive}"
if command -v ossutil >/dev/null 2>&1 && [[ $(ossutil version 2>/dev/null) == "$version" ]]; then
echo "ossutil $version already installed"
exit 0
fi
install_dir=$(mktemp -d /var/tmp/ossutil-install-XXXXXX)
case "$install_dir" in /var/tmp/ossutil-install-*) ;; *) echo "Unsafe install directory" >&2; exit 9;; esac
trap 'rm -rf -- "$install_dir"' EXIT
curl -fsSL --max-time 120 -o "$install_dir/$archive" "$download_url"
printf '%s %s\n' "$expected_sha256" "$install_dir/$archive" | sha256sum -c -
mkdir -p "$install_dir/unpacked"
if command -v unzip >/dev/null 2>&1; then
unzip -q "$install_dir/$archive" -d "$install_dir/unpacked"
elif command -v python3 >/dev/null 2>&1; then
python3 -m zipfile -e "$install_dir/$archive" "$install_dir/unpacked"
else
echo "Neither unzip nor python3 is available to extract ossutil" >&2
exit 3
fi
binary=$(find "$install_dir/unpacked" -type f -name ossutil -print -quit)
[[ -n "$binary" ]] || { echo "ossutil binary is missing from the verified archive" >&2; exit 4; }
install -m 0755 "$binary" /usr/local/bin/ossutil
[[ $(/usr/local/bin/ossutil version) == "$version" ]]
echo "ossutil $version installed"