#!/bin/sh # # Holt den Deploymentcenter Update-Agent und legt ihn ausfuehrbar ab. # # wget -qO- https://dc.mhdf.de/installer/install.sh | sh # # Das Skript fuehrt die Installation NICHT selbst aus. Es laedt das Binary, # prueft die Pruefsumme und sagt, wie es weitergeht - was danach passiert, # entscheidet der Mensch davor. Ein Skript aus dem Netz, das ungefragt eine # Anwendung einrichtet und dabei nach Zugangsdaten fragt, waere genau das # Muster, vor dem man Nutzer sonst warnt. set -eu BASE_URL="${DC_BASE_URL:-https://dc.mhdf.de}" TARGET_DIR="${DC_INSTALL_DIR:-}" # ---------------------------------------------------------------- Plattform os="$(uname -s)" arch="$(uname -m)" case "$os" in Linux) ;; *) echo "Nicht unterstuetzt: $os" >&2 echo "Fuer Windows: https://dc.mhdf.de/installer/install.ps1" >&2 exit 1 ;; esac case "$arch" in x86_64|amd64) rid="linux-x64" ;; aarch64|arm64) rid="linux-arm64" ;; *) echo "Nicht unterstuetzte Architektur: $arch" >&2 exit 1 ;; esac binary="update-agent-$rid" # ------------------------------------------------------------- Zielverzeichnis if [ -z "$TARGET_DIR" ]; then if [ -w /usr/local/bin ] 2>/dev/null; then TARGET_DIR="/usr/local/bin" else TARGET_DIR="$PWD" fi fi target="$TARGET_DIR/update-agent" # --------------------------------------------------------------- Werkzeuge if command -v curl >/dev/null 2>&1; then fetch() { curl -fsSL "$1" -o "$2"; } elif command -v wget >/dev/null 2>&1; then fetch() { wget -q "$1" -O "$2"; } else echo "Weder curl noch wget vorhanden." >&2 exit 1 fi tmp="$(mktemp -d)" # shellcheck disable=SC2064 trap "rm -rf '$tmp'" EXIT INT TERM echo "Lade $binary von $BASE_URL ..." fetch "$BASE_URL/installer/$binary" "$tmp/agent" fetch "$BASE_URL/installer/$binary.sha256" "$tmp/agent.sha256" # ------------------------------------------------------------- Pruefsumme expected="$(tr -d ' \t\r\n' < "$tmp/agent.sha256")" if command -v sha256sum >/dev/null 2>&1; then actual="$(sha256sum "$tmp/agent" | cut -d' ' -f1)" elif command -v shasum >/dev/null 2>&1; then actual="$(shasum -a 256 "$tmp/agent" | cut -d' ' -f1)" else actual="" fi if [ -z "$actual" ]; then echo "WARNUNG: Keine SHA256-Pruefung moeglich (weder sha256sum noch shasum)." >&2 elif [ "$actual" != "$expected" ]; then echo "ABBRUCH: Pruefsumme stimmt nicht ueberein." >&2 echo " erwartet: $expected" >&2 echo " erhalten: $actual" >&2 exit 1 else echo "Pruefsumme in Ordnung." fi # ------------------------------------------------------------------ Ablegen chmod +x "$tmp/agent" if ! mv "$tmp/agent" "$target" 2>/dev/null; then echo "Kein Schreibrecht in $TARGET_DIR - versuche es mit sudo oder setze DC_INSTALL_DIR." >&2 exit 1 fi echo "" echo "Abgelegt: $target" echo "" echo "Weiter mit:" echo " $target --action install" echo "" echo "Dafuer werden Benutzername und Passwort eines Kontos der Rolle 'installer'" echo "gebraucht. Ein Administratorkonto tut es auch, gehoert aber nicht auf ein" echo "Zielsystem."