#!/usr/bin/env bash # ============================================================================= # Zabbix Agent 2 – Update auf Version 7.4 # Unterstützte Systeme: Debian 11/12/13, Ubuntu 20.04 / 22.04 / 24.04 # # Aufruf: # sudo bash update-zabbix-agent.sh # # Bestehende Konfiguration (/etc/zabbix/zabbix_agent2.conf) bleibt erhalten. # ============================================================================= set -euo pipefail ZABBIX_VERSION="7.4" # Farben RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m' info() { echo -e "${GREEN}[INFO]${NC} $*"; } warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } error() { echo -e "${RED}[ERROR]${NC} $*" >&2; exit 1; } # ── Prüfungen ───────────────────────────────────────────────────────────────── [[ $EUID -ne 0 ]] && error "Bitte als root oder mit sudo ausführen." # ── OS-Erkennung ────────────────────────────────────────────────────────────── [[ ! -f /etc/os-release ]] && error "Kein /etc/os-release gefunden." source /etc/os-release case "$ID" in debian) REPO_OS="debian" ;; ubuntu) REPO_OS="ubuntu" ;; *) error "Nicht unterstütztes Betriebssystem: $ID" ;; esac info "System erkannt: ${PRETTY_NAME}" # ── Aktuelle Version ermitteln ──────────────────────────────────────────────── CURRENT_VERSION=$(dpkg -l zabbix-agent2 2>/dev/null | awk '/^ii/{print $3}' | head -1 || true) if [[ -z "$CURRENT_VERSION" ]]; then error "zabbix-agent2 ist nicht installiert. Bitte zuerst install-zabbix-agent.sh ausführen." fi info "Installierte Version: ${CURRENT_VERSION}" # ── Zabbix 7.4 Repository einrichten ───────────────────────────────────────── RELEASE_PKG="zabbix-release_latest_${ZABBIX_VERSION}+${REPO_OS}${VERSION_ID}_all.deb" REPO_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/release/${REPO_OS}/pool/main/z/zabbix-release/${RELEASE_PKG}" info "Lade Zabbix ${ZABBIX_VERSION} Repository-Paket herunter ..." wget -q --show-progress -O "/tmp/${RELEASE_PKG}" "${REPO_URL}" \ || error "Download fehlgeschlagen: ${REPO_URL}" info "Installiere Repository-Paket ..." # --force-confold: bestehende Repo-Konfiguration behalten, keine Rückfrage # Hinweis: dpkg kennt kein -o, die Option wird direkt übergeben DEBIAN_FRONTEND=noninteractive dpkg --force-confold -i "/tmp/${RELEASE_PKG}" rm -f "/tmp/${RELEASE_PKG}" apt-get update -qq # ── Update durchführen ──────────────────────────────────────────────────────── info "Aktualisiere zabbix-agent2 auf Version ${ZABBIX_VERSION} ..." info "(Bestehende Konfigurationsdatei wird beibehalten)" # --force-confold: bei Konflikten immer die vorhandene Config behalten, keine Rückfrage DEBIAN_FRONTEND=noninteractive apt-get install \ --only-upgrade \ -y \ -o Dpkg::Options::="--force-confold" \ -o Dpkg::Options::="--force-confdef" \ zabbix-agent2 # ── Dienst neu starten ──────────────────────────────────────────────────────── info "Starte zabbix-agent2 neu ..." systemctl restart zabbix-agent2 # ── Ergebnis ────────────────────────────────────────────────────────────────── NEW_VERSION=$(dpkg -l zabbix-agent2 2>/dev/null | awk '/^ii/{print $3}' | head -1 || true) echo "" info "════════════════════════════════════════════════" info " Zabbix Agent 2 erfolgreich aktualisiert!" info " Vorher : ${CURRENT_VERSION}" info " Nachher: ${NEW_VERSION}" info " Config : /etc/zabbix/zabbix_agent2.conf (unverändert)" info " Status : $(systemctl is-active zabbix-agent2)" info "════════════════════════════════════════════════"