37 lines
1.5 KiB
Bash
37 lines
1.5 KiB
Bash
#!/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"
|