#!/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"