rmm2/agent-linux/install.sh

145 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
#
# RMM Agent Linux Installer
# Unterstuetzt: Debian, Ubuntu, Proxmox VE
#
# Verwendung nach ZIP-Download:
# unzip rmm-linux-*.zip
# bash install.sh
#
set -e
BASEDIR="$(cd "$(dirname "$0")" && pwd)"
AGENT_BIN="${BASEDIR}/rmm-agent-linux"
UPDATER_BIN="${BASEDIR}/rmm-updater-linux"
INSTALL_DIR="/usr/local/bin"
CONFIG_DIR="/etc/rmm"
CONFIG_FILE="${CONFIG_DIR}/config.yaml"
AGENT_ID_FILE="${CONFIG_DIR}/agent_id"
echo "========================================"
echo " RMM Agent Linux Installer"
echo "========================================"
# Root-Check
if [ "$(id -u)" -ne 0 ]; then
echo "FEHLER: Bitte als root ausfuehren (sudo bash install.sh)"
exit 1
fi
# Binaries pruefen
if [ ! -f "${AGENT_BIN}" ]; then
echo "FEHLER: ${AGENT_BIN} nicht gefunden"
echo "ZIP-Inhalt muss 'rmm-agent-linux' enthalten"
exit 1
fi
# Alte Dienste stoppen
echo "[1/5] Alte Dienste stoppen..."
systemctl stop rmm-agent 2>/dev/null || true
systemctl stop rmm-updater 2>/dev/null || true
# Binaries installieren
echo "[2/5] Binaries installieren..."
cp "${AGENT_BIN}" "${INSTALL_DIR}/rmm-agent"
chmod +x "${INSTALL_DIR}/rmm-agent"
echo " rmm-agent -> ${INSTALL_DIR}/rmm-agent"
if [ -f "${UPDATER_BIN}" ]; then
cp "${UPDATER_BIN}" "${INSTALL_DIR}/rmm-updater"
chmod +x "${INSTALL_DIR}/rmm-updater"
echo " rmm-updater -> ${INSTALL_DIR}/rmm-updater"
fi
# Config anlegen (wenn noch nicht vorhanden)
echo "[3/5] Konfiguration anlegen..."
mkdir -p "${CONFIG_DIR}"
if [ ! -f "${CONFIG_FILE}" ]; then
cat > "${CONFIG_FILE}" << 'CFGEOF'
backend_url: "https://BACKEND_IP:8443"
api_key: "DEIN_API_KEY"
interval_seconds: 60
agent_name: ""
insecure: true
CFGEOF
echo " Config erstellt: ${CONFIG_FILE}"
echo " WICHTIG: Bitte Backend-URL und API-Key eintragen!"
else
echo " Config bereits vorhanden — unveraendert"
fi
# Systemd Services
echo "[4/5] Systemd Services installieren..."
cat > /etc/systemd/system/rmm-agent.service << 'SVCEOF'
[Unit]
Description=RMM Agent
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/rmm-agent -config /etc/rmm/config.yaml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=rmm-agent
[Install]
WantedBy=multi-user.target
SVCEOF
if [ -f "${INSTALL_DIR}/rmm-updater" ]; then
cat > /etc/systemd/system/rmm-updater.service << 'SVCEOF'
[Unit]
Description=RMM Agent Updater
After=network-online.target rmm-agent.service
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/rmm-updater
Restart=always
RestartSec=30
StandardOutput=journal
StandardError=journal
SyslogIdentifier=rmm-updater
[Install]
WantedBy=multi-user.target
SVCEOF
fi
systemctl daemon-reload
systemctl enable rmm-agent
[ -f "${INSTALL_DIR}/rmm-updater" ] && systemctl enable rmm-updater || true
echo " Systemd Services registriert"
# Start (nur wenn Config bereits ausgefuellt)
echo "[5/5] Dienste starten..."
if grep -q "BACKEND_IP\|DEIN_API_KEY" "${CONFIG_FILE}" 2>/dev/null; then
echo ""
echo " Config noch nicht angepasst — Agent wird NICHT gestartet."
echo ""
echo " Bitte Config bearbeiten und dann starten:"
echo " nano ${CONFIG_FILE}"
echo " systemctl start rmm-agent"
[ -f "${INSTALL_DIR}/rmm-updater" ] && echo " systemctl start rmm-updater" || true
else
systemctl start rmm-agent
[ -f "${INSTALL_DIR}/rmm-updater" ] && systemctl start rmm-updater || true
echo " Dienste gestartet"
fi
echo ""
echo "========================================"
echo " RMM Agent Linux installiert!"
echo ""
echo " Config: ${CONFIG_FILE}"
echo " Logs: journalctl -u rmm-agent -f"
echo " Status: systemctl status rmm-agent"
echo "========================================"